Почему моим потоковым тестам не удается проверить транзакцию на определенных узлах, даже если они присутствуют в их хранилищах?

#java #corda

#java #corda

Вопрос:

ОШИБКА: java.lang.Ошибка утверждения: ожидается: net.corda.core.transactions.Подписана транзакция, но была: net.corda.core.transactions.Ожидается подписанная транзакция:net.corda.core.transactions.Фактическая подписанная транзакция:net.corda.core.transactions.Подписанная транзакция

Насколько я вижу, как ожидаемые, так и фактические транзакции одинаковы, но они по-прежнему выдают ошибку. Он проходил в других тестах, но внезапно завершился неудачей без какой-либо удовлетворительной информации для отладки. ниже приведен код из моих тестов:

 @Test
    public void flowRecordsATransactionInBothPartiesTransactionStorages() throws Exception {
        SignedTransaction signedTx = createPlacementCompleteTxn();

        // We check the recorded transaction in both vaults.
        for (StartedMockNode node : ImmutableList.of(participantsNodes.get(0), participantsNodes.get(1), participantsNodes.get(3))) {
            assertEquals(signedTx, node.getServices().getValidatedTransactions().getTransaction(signedTx.getId()));
        }
  

Комментарии:

1. Вы проверили equals() метод для net.corda.core.transactions.SignedTransaction класса? Вы также можете использовать debug для ручного изучения свойств этих объектов.

Ответ №1:

У меня это отлично работает на Corda 4. Например, следующий тест проходит:

 @Test
public void recordedTransactionIsCorrect() throws Exception {
    ExampleFlow.Initiator flow = new ExampleFlow.Initiator(1, b.getInfo().getLegalIdentities().get(0));
    CordaFuture<SignedTransaction> future = a.startFlow(flow);
    network.runNetwork();
    SignedTransaction signedTx = future.get();

    // We check the recorded transaction in both vaults.
    for (StartedMockNode node : ImmutableList.of(a, b)) {
        SignedTransaction recordedTx = node.getServices().getValidatedTransactions().getTransaction(signedTx.getId());
        assertEquals(recordedTx, signedTx);
    }
}