我正在尝试为其中一个调用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()。但是,它不执行该调用的模拟响应,而是执行原始实现,并且测试用例失败。有人可以帮忙吗?