我正在尝试使用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
的类似测试代码非常感谢: - )
答案 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
的输出状态仍未消耗。