我在单元测试中有以下一行
verify(MyMock).handleError(any(ICallBack.class),any(BaseError.class) );
但我想写的是验证基本错误类(第二个参数)是否具有
的验证BaseError::errorCode = 3
我该怎么做?
只有参数捕获吗?
感谢。
答案 0 :(得分:5)
只需为第二个参数使用适当的匹配器。例如:
verify(MyMock).handleError(any(ICallBack.class), eq(new BaseError(3)));
假设此实例与具有此错误代码的任何BaseError
实例相同。如果给定的实例ArgumentMatcher<BaseError>
为true
,您还可以实现自定义errorCode
并实现返回3
的逻辑。由:
verify(MyMock).handleError(any(ICallBack.class),
argThat(new ArgumentMatcher<BaseError> {
@Override
public boolean matches(Object baseError) {
return ((BaseError) baseError).errorCode == 3;
}
}));
答案 1 :(得分:0)
以下内容应该有所帮助
doAnswer(new Answer<Void>() {
public Void answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments()
assertTrue((long)args[1], 3);
return null;
}
}).when(MyMock).handleError(any(ICallBack.class),any(BaseError.class) );