我使用MockK作为kotlin的模拟库,由于某种原因,我在every{}行上得到一个错误。
io.mockk.MockKException: Missing calls inside every { ... } block.这是我的测试类
internal class TestClass {
private val service: MyService = mockk(relaxed = true)
private val dao: MyDao = mockk(relaxed = true)
private val repository: MyRepository = MyRepositoryImp(
service = service,
dao = dao,
)
@Test
fun test() = runBlocking {
val expected = SOMETHING
every { repository.getValues() } returns flowOf(SOMETHINGELSE) // crash
assertEquals(1, 1)
}
}MyService只是一个改装的接口
internal interface MyService {
@GET("123")
suspend fun getRemoteData(): Response<SOMECLASS>
}有谁知道吗?谢谢!
发布于 2021-06-19 01:06:40
您已经将存储库实例化为真实的实例。这意味着它实际上会在其实现中执行代码,这就是所谓的“测试中的主体”。
但是every { ... } returns ...需要一个模拟实例。
因此,在您的示例中,应该是
every { service.getRemoteData() } returns ...或every { dao.someMethod() } returns ...
https://stackoverflow.com/questions/68036534
复制相似问题