首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我想模拟数据和测试UI片段时,doNothing()不能工作

当我想模拟数据和测试UI片段时,doNothing()不能工作
EN

Stack Overflow用户
提问于 2021-11-02 09:35:14
回答 1查看 1.7K关注 0票数 0

我将使用Espresso测试 fragment,然后我想要模拟 viewmodels和成员。

在我的viewModel中,我有这样一个void function

代码语言:javascript
复制
fun getLoginConfig() {
    viewModelScope.launchApiWith(_loginConfigLiveData) {
       repository.getLoginConfig()
    }
}

在测试fragment中,当我们从viewModel调用getLoginConfig()时,我希望doNothing()来模拟,但是我用这个error面对

代码语言:javascript
复制
org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here


E.g. thenReturn() may be missing.
Examples of correct stubbing:
    when(mock.isOk()).thenReturn(true);
    when(mock.isOk()).thenThrow(exception);
    doThrow(exception).when(mock).someVoidMethod();
Hints:
 1. missing thenReturn()
 2. you are trying to stub a final method, which is not supported
 3. you are stubbing the behaviour of another mock inside before 'thenReturn' instruction is completed

testFragmentClass上的这一行:

代码语言:javascript
复制
   @Before
    fun setUp() {
        //logOut


        mockVm = mock(SplashVM::class.java)

        loadKoinModules(module {
            single {
                mockVm
            }
        })
}




   doNothing().`when`(mockVm.getLoginConfig()).let {
       mockVm.loginConfigLiveData.postValue(Resource.Success(
           LoginConfigResponse(
               listOf("1"),1,1,"1",true)
       ))
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-02 14:32:18

有几件事:

  • doNothing只是什么也不做,这对于模拟上的void方法来说是不必要的。这是默认行为。如果您希望在模拟调用( doAnswer is the way to go.
  • In doVerb )语法中发生一些特定的事情,则莫基托希望那里只有一个变量;表达式不应该在模拟上调用方法,否则莫奇托认为您已经失去兴趣并抛出了UnfinishedStubbingException.

因此,您的修补程序看起来如下:

代码语言:javascript
复制
doAnswer {
  mockVm.loginConfigLiveData.postValue(Resource.Success(
    LoginConfigResponse(
      listOf("1"),1,1,"1",true)
  ))
}.`when`(mockVm).getLoginConfig()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69808166

复制
相关文章

相似问题

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