在Corda FlowTest设置中具有两个未消耗状态的LinearState

时间:2018-02-06 14:16:55

标签: corda

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

但是,当我查询保险库中的状态时,我得到两个未消耗的状态。我本来期望其中一个被消耗掉(因此有m_pSPSMapList->EnsureVisible(nItem, FALSE); m_pSPSMapList->SetFocus(); m_pSPSMapList->SetItemState(nItem, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); return FALSE; // OnInitialDialog necessarily must return false )。

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

我需要做些什么才能在保险库中只有一个未消耗的状态?

重现here

的类似测试代码

非常感谢: - )

1 个答案:

答案 0 :(得分:2)

在测试代码中,首先生成两个事务,然后使用以下代码一次记录它们:

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

如果修改代码以便在第二个事务之前记录第一个事务,则流程测试将通过:

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

看起来recordTransactions并不一定按照作为参数传递的顺序记录事务。如果首先记录tx2,则无法找到tx1的输出状态以标记为已消耗。因此tx1的输出状态仍未消耗。