【问题标题】:How to get Input states for flow testing如何获取流测试的输入状态
【发布时间】:2018-07-24 18:18:45
【问题描述】:

我有两个流程,说他们的名字是:

  • flow_out(需要 1 个输入状态)
  • flow_in(上述输入 状态/事务由此存储)

我的流程(flow_out)有 1 个输入状态和 1 个输出状态。输入状态从流(flow_out)中的保险库中检索,并由所有各方(当前测试 MockNetwork 中的 3 方)在合约中验证。

现在测试用例失败,因为我的流程(flow_out)无法获得该状态,因为该事务从未发生(它是不同流程的一部分,即 flow_in)。

为了解决这个问题,我也在 Junit 的 @Before 中启动了另一个流(flow_in),用于存储输入状态所需的事务和所有通过的事务。

Corda 的流测试 API 中还有哪些其他可用方法 直接存储输入事务/状态,而不只运行流程 存储这些输入事务?

感谢您的帮助。

【问题讨论】:

    标签: corda


    【解决方案1】:

    由于您可以访问节点的ServiceHubs,因此您可以直接在测试方法中构建、签署和存储交易,而不是使用流程:

    class FlowTests {
        lateinit var network: MockNetwork
        lateinit var a: StartedMockNode
        lateinit var b: StartedMockNode
    
        @Before
        fun setup() {
            network = MockNetwork(listOf("com.example.contract"))
            a = network.createPartyNode()
            b = network.createPartyNode()
            listOf(a, b).forEach { it.registerInitiatedFlow(ExampleFlow.Acceptor::class.java) }
            network.runNetwork()
        }
    
        @After
        fun tearDown() {
            network.stopNodes()
        }
    
        @Test
        fun `a flow test`() {
            val lender = a.info.legalIdentities.first()
            val borrower = b.info.legalIdentities.first()
    
            val transactionBuilder = TransactionBuilder(network.defaultNotaryIdentity)
                    .addOutputState(IOUState(99, lender, borrower), IOUContract.IOU_CONTRACT_ID)
                    .addCommand(IOUContract.Commands.Create(), listOf(lender.owningKey, borrower.owningKey))
    
            a.transaction { transactionBuilder.verify(a.services) }
            val partSignedTransaction = a.services.signInitialTransaction(transactionBuilder)
            val signedTransaction = b.services.addSignature(partSignedTransaction)
    
            a.services.recordTransactions(signedTransaction)
    
            TODO("Test next flow.")
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多