Mockito Matchers.any(...) 仅在一个参数上
Mockito Matchers.any(...) on one argument only
我想这样做:
verify(function, Mockito.times(1)).doSomething(argument1, Matchers.any(Argument2.class));
其中 argument1 是类型 Argument1 的特定实例,而 argument2 是类型的任何实例类型 Argument2.
但是我得到一个错误:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 2 matchers expected, 1 recorded. This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String"); When using matchers, all arguments have to be provided by matchers. For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
根据该建议,我可以编写以下内容,一切都很好:
verify(function, Mockito.times(1)).doSomething(Matchers.any(Argument1.class), Matchers.any(Argument2.class));
我在哪里寻找 Argument1 类型的任何参数和 Argument2.
类型的任何参数
我怎样才能实现这种期望的行为?
可能的参数匹配器不止一种,其中一种是 eq
,异常消息中提到了这一点。使用:
verify(function, times(1)).doSomething(eq(arg1), any(Argument2.class));
(应该有静态导入——eq()
是 Matchers.eq()
)。
您还有 same()
(它确实引用相等性,即 ==
),更一般地说,您可以编写自己的匹配器。
我想这样做:
verify(function, Mockito.times(1)).doSomething(argument1, Matchers.any(Argument2.class));
其中 argument1 是类型 Argument1 的特定实例,而 argument2 是类型的任何实例类型 Argument2.
但是我得到一个错误:
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 2 matchers expected, 1 recorded. This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String"); When using matchers, all arguments have to be provided by matchers. For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
根据该建议,我可以编写以下内容,一切都很好:
verify(function, Mockito.times(1)).doSomething(Matchers.any(Argument1.class), Matchers.any(Argument2.class));
我在哪里寻找 Argument1 类型的任何参数和 Argument2.
类型的任何参数我怎样才能实现这种期望的行为?
可能的参数匹配器不止一种,其中一种是 eq
,异常消息中提到了这一点。使用:
verify(function, times(1)).doSomething(eq(arg1), any(Argument2.class));
(应该有静态导入——eq()
是 Matchers.eq()
)。
您还有 same()
(它确实引用相等性,即 ==
),更一般地说,您可以编写自己的匹配器。