Corda FlowTest 设置中具有两个未使用状态的 LinearState

LinearState with two unconsumed states in Corda FlowTest setup

我正在尝试为带有 LinearState 的流编写 FlowTest。在设置中,我需要创建一个 LinearState,然后通过在第二个事务中使用第一个版本来创建该状态的第二个版本(具有相同的唯一标识符)。我遵循了 corda 文档 the v2.0 教程中的步骤。

但是,当我查询保险库中的状态时,我得到了两个未使用的状态。我本以为其中一个已经被消耗掉了(因此 Vault.StateStatus.UNCONSUMED)。

我已经为实际代码编写了一个基于驱动程序的集成测试,并且工作正常。所以我假设我针对这种情况错误地设置了测试。

知道我需要做什么才能在保管库中只有一个未使用的状态吗?

重现类似的测试代码here

非常感谢:-)

在您的测试代码中,您首先生成两个交易,然后使用以下代码同时记录它们:

member1.database.transaction {
    member1.services.recordTransactions(tx1, tx2)
}

如果您修改代码以便在第二笔交易之前记录第一笔交易,则流程测试通过:

member1.database.transaction {
    member1.services.recordTransactions(tx1)
    member1.services.recordTransactions(tx2)
}

看起来 recordTransactions 不一定按照作为参数传入的顺序记录交易。如果先记录tx2,则找不到tx1的输出状态标记为已消耗。 tx1 的输出状态因此保持未被消耗。