【问题标题】:How can I resolve a Mockito argument matching problem?如何解决 Mockito 参数匹配问题?
【发布时间】:2020-01-10 18:08:20
【问题描述】:

我正在 Android 应用程序中测试 dao。我正在使用 mockito 进行单元测试,在创建模拟 dao 后,当我在 dao.insert(CustomerClass) 上执行 when 时出现以下错误:

mockito 中的when(java.lang.void) 不能应用于(void)。

@Dao
public interface WListDao {

    @Query("SELECT * from wlist_table ORDER BY title ASC")
    LiveData<List<WList>> getAllWList();

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(WList wList);

    @Delete
    void delete(WList wList);

}

////////////////////

@Test
    public void addNewWListToDb(){
        WListDao dao = mock(WListDao.class);
        int count =0;
        when(dao.insert(any(WList.class))).thenAnswer(count++);
    }

【问题讨论】:

  • 更新了应用的句子和代码格式。

标签: java android unit-testing mockito


【解决方案1】:

语法:

when(mockObject.someMethod(someParameter)).thenAnswer(someAnswer);

...对于 void 方法无效。相反,您必须使用以下语法:

doAnswer(someAnswer).when(mockObject).someMethod(someParameter);

特别注意paren 展示位置。对于doAnswer 语法,方法调用在when 的括号之外

有关更多信息,请参阅 Mockito 文档 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-06
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多