如何在 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

Cordapp 从开源到企业的迁移

如何在 Grails 2.0 服务中对 i18n 注入 messageSource 的使用进行单元或集成测试

如何在 monorepo 中对产品进行版本控制?

如何在 Apache 服务器(和其他服务器)上检测 PHP 中对 .htaccess 的支持