Corda流执行外部原始服务,而不是单元测试用例的模拟服务

时间:2018-12-12 16:47:57

标签: unit-testing kotlin corda mockk

我正在尝试为其中一个调用oracle服务的流编写测试用例,然后进一步调用一个简单的java服务从csv中获取一些数据。我想模拟获取csv数据的服务功能之一的响应。我使用MockK框架来模拟响应。我面临的问题是,当流运行时,将调用原始服务而不是返回模拟数据。以下是我的代码帮助片段。 单元测试:

class TestsService {
  private lateinit var network: MockNetwork
  private lateinit var partyA: StartedMockNode
  private lateinit var partyB: StartedMockNode
  private lateinit var Oracle: StartedMockNode

@MockK
private lateinit var service: ServiceToBeMocked

@Before
fun setup() {
    MockKAnnotations.init(this)

     every { service.mockedFunction() } returns mockedResponse    //This function mocks response

    network = MockNetwork(listOf("service package names."))
    partyA = network.createPartyNode(CordaX500Name("abcd","state","country"))
    partyB = network.createPartyNode(CordaX500Name("efgh","state","country"))
    Oracle = network.createPartyNode(CordaX500Name("jklm","state","country"))
Oracle.registerInitiatedFlow(Flow to register)
}
 @Test
 fun `Test statement`() {
    val expected = linkedMapOf(mockedResponse),
    val actual = fetchData()
    assertEquals(expected, actual.get(), "Success")
 }
  private fun fetchData(): Future<Map<Key,Data>> {
    val flow = //Flow to start
    val future = initiator.startFlow(flow)
    network.runNetwork()
    return future
 }
}

Flow内部调用service.mockedFunction()。但是,它不执行该调用的模拟响应,而是执行原始实现,并且测试用例失败。有人可以帮忙吗?

0 个答案:

没有答案