首页 > 解决方案 > 测试 CordaApp 更改的最佳(最快)方法是什么?

问题描述

我想知道如何实现 CordApp 更改的最短反馈周期。现在,每次更改大约需要 2 分钟:再次使用 gradle clean build deployNoded 和 runnodes。

标签: corda

解决方案


如果您要更改合同,您应该使用 Corda 的合同测试框架。这是IOU CorDapp 的合约测试的一个例子:

@Test
fun `transaction must include Create command`() {
    ledgerServices.ledger {
        transaction {
            output(IOU_CONTRACT_ID, IOUState(1, miniCorp.party, megaCorp.party))
            fails()
            command(listOf(megaCorp.publicKey, miniCorp.publicKey), IOUContract.Commands.Create())
            verifies()
        }
    }
}

如果您正在对 CorDapp 进行其他更改,您应该使用 Corda 的流测试框架。以下是IOU CorDapp 的流测试示例:

@Test
fun `flow records the correct IOU in both parties' vaults`() {
    val iouValue = 1
    val flow = ExampleFlow.Initiator(1, b.info.singleIdentity())
    val future = a.startFlow(flow)
    network.runNetwork()
    future.getOrThrow()

    // We check the recorded IOU in both vaults.
    for (node in listOf(a, b)) {
        node.transaction {
            val ious = node.services.vaultService.queryBy<IOUState>().states
            assertEquals(1, ious.size)
            val recordedState = ious.single().state.data
            assertEquals(recordedState.value, iouValue)
            assertEquals(recordedState.lender, a.info.singleIdentity())
            assertEquals(recordedState.borrower, b.info.singleIdentity())
        }
    }
}

您可以在此处找到更多详细信息:https ://docs.corda.net/api-testing.html#contract-testing 。


推荐阅读