corda - 测试 CordaApp 更改的最佳(最快)方法是什么?
问题描述
我想知道如何实现 CordApp 更改的最短反馈周期。现在,每次更改大约需要 2 分钟:再次使用 gradle clean build deployNoded 和 runnodes。
解决方案
如果您要更改合同,您应该使用 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 。
推荐阅读
- ruby - 无法使用 selenium ruby 点击可用日期
- android - java.lang.NullPointerException:null 不能转换为非 null 类型 java.util.ArrayList
- python - 如何让 Tensorflow 计算损失函数的梯度?
- servicenow - 从请求项目的工作流发布到活动流
- python - 有没有一种方法可以在 python pandas 数据框中包含锚标签?我有一个带有锚标记的 .html 文件,但它在 python 输出中不可见
- javascript - ReactJs 隐藏一些 HTML 取决于情况
- html - safari iphone中的html5视频播放问题
- c# - 无法从根提供商解析范围服务“Updater.Service.IBridgeService”
- javascript - ExtJS - 记录更改表单值的格式
- .net-core - 指定的 deps.json [] 不存在 - Blazor WebAssembly App 项目类型