java - org.mockito.exceptions.misusing.InvalidUseOfMatchersException :

标签 java junit mockito matcher

我在服务和测试类中的方法:

public void updateSubModuleOrder(Long[] data, Long moduleSysId, Long userId) {
    try {
        for (int i = 0; i < data.length; i++) {
            SubModule subModule=new SubModule();

            int temp = i + 1;
            userSubmodule.setDsplySeq(temp);
            userSubModuleDao.saveOrUpdate(userSubmodule);
@Test
public void testupdateSubModuleOrder(){
    UserModuleServiceImpl userModuleServiceImpl = new UserModuleServiceImpl();
    UserSubModuleDao userSubModuleDao = mock(User//set the required param ,some code here//
    UserSubModuleId userSubModuleId=new UserSubModuleId();
    //some code//
    when(userSubModuleDao.findById((any(UserSubModuleId.class)),false)).thenReturn(userSubModule);
    when(userSubModuleDao.saveOrUpdate(any(UserSubModule.class))).thenReturn(null);
    userModuleServiceImpl.updateSubModuleOrder(data, moduleSysId, userId);

};*

我得到的错误是

FAILED: testupdateSubModuleOrder
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
2 matchers expected, 1 recorded:
-> at com.TestUserModuleServiceImpl.testupdateSubModuleOrder(TestUserModuleServiceImpl.java:267)

如果匹配器与原始值组合,则可能会发生此异常:

//incorrect:
someMethod(anyObject(), "raw String");

使用匹配器时,所有参数都必须由匹配器提供。 例如:

//correct:
someMethod(anyObject(), eq("String by matcher"));

findbyID 方法是我的 dao 扩展的 baseDao 方法。它不是最终的或静态的,但我仍然遇到这个问题。

最佳答案

您要么必须指定没有 匹配器,要么必须指定所有 参数需要匹配。所以这个:

when(userSubModuleDao.findById((any(UserSubModuleId.class)),false))

应该是:

when(userSubModuleDao.findById(any(UserSubModuleId.class), eq(false)))

(我已经删除了 any 调用周围的多余括号。)

来自Matchers documentation :

Warning:

If you are using argument matchers, all arguments have to be provided by matchers.

关于java - org.mockito.exceptions.misusing.InvalidUseOfMatchersException :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22164787/

相关文章:

unit-testing - 使用 Grails/Groovy 的 Mockito 中的错误

java - PowerMock 提示不正确的参数,即使私有(private)方法被模拟

java - 如何从 session 中打印 bean 值?

java - 如何分析 NetBeans Maven 项目中的 JUnit 测试?

java - 无法启动 RESTful Web 服务

java - JUnit 比较两个实体列表

java - 如何在java中使用mockito模拟调用类的方法

mockito - 部分 mock 被认为是不好的做法? (莫基托)

java - 使用 JNI 加载 C 插件系统 : undefined symbol

java - mongodriver 按升序排列