如何在 Cordapp 中对服务和控制器(kotlin)进行单元测试?
Posted
技术标签:
【中文标题】如何在 Cordapp 中对服务和控制器(kotlin)进行单元测试?【英文标题】:How to Unit test Service & controller (kotlin) in a Cordapp? 【发布时间】:2020-11-27 11:09:14 【问题描述】:我已经阅读了许多文档来获取 Cordapp 中的单元测试服务和控制器的样本,而不是流程(已经在 corda 文档中使用)。谁能帮我获取一个实现服务单元测试的示例cordapp?
【问题讨论】:
【参考方案1】:尝试查看 github 上的 CordaService Autopayroll 示例。
链接:https://github.com/corda/samples-java/tree/master/Features/cordaservice-autopayroll
可以访问在测试代码中使用的已注册服务
//Test #1 check if the requestState is being sent to the bank operator behind the scene.
@Test
fun `dummy test`()
val future = a.startFlow(RequestFlowInitiator("500", b.info.legalIdentities.first()))
network.runNetwork()
val ptx = future.get()
println("Signed transaction hash: $ptx.id")
listOf(a, bank).map
it.services.validatedTransactions.getTransaction(ptx.id)
.forEach
val txHash = (it as SignedTransaction).id
println("$txHash == $ptx.id")
assertEquals(ptx.id, txHash)
链接:https://github.com/corda/samples-kotlin/blob/master/Features/cordaService-autopayroll/workflows-kotlin/src/test/kotlin/net/corda/examples/autopayroll/FlowTests.kt
祝你好运!
【讨论】:
谢谢@davidawad。但我也需要模拟代理。因为我还需要从 api 服务文件进行测试。你能分享任何模拟代理的项目吗?【参考方案2】:我们可以使用 Mockito 模块进行单元测试服务功能和 API 所需的模拟和刺伤。
This link will direct more on how to mock CordaRPCops using mockito as an example.
【讨论】:
以上是关于如何在 Cordapp 中对服务和控制器(kotlin)进行单元测试?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 blazor webassembly 项目中对服务器端控制器中的用户进行身份验证?
如何在 Service 构造函数中对 Controller 进行单元测试和模拟 @InjectModel