首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在使用mokk时获得“每个{ ... }块中缺少调用”

在使用mokk时获得“每个{ ... }块中缺少调用”
EN

Stack Overflow用户
提问于 2021-06-18 22:00:54
回答 1查看 68关注 0票数 0

我使用MockK作为kotlin的模拟库,由于某种原因,我在every{}行上得到一个错误。

代码语言:javascript
运行
复制
io.mockk.MockKException: Missing calls inside every { ... } block.

这是我的测试类

代码语言:javascript
运行
复制
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只是一个改装的接口

代码语言:javascript
运行
复制
internal interface MyService {

  @GET("123")
  suspend fun getRemoteData(): Response<SOMECLASS>

}

有谁知道吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-06-19 01:06:40

您已经将存储库实例化为真实的实例。这意味着它实际上会在其实现中执行代码,这就是所谓的“测试中的主体”。

但是every { ... } returns ...需要一个模拟实例。

因此,在您的示例中,应该是

every { service.getRemoteData() } returns ...every { dao.someMethod() } returns ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68036534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档