Mockito - 使用特定参数(条件)调用验证方法

时间:2014-08-05 14:01:44

标签: java mockito

我在单元测试中有以下一行

verify(MyMock).handleError(any(ICallBack.class),any(BaseError.class) );

但我想写的是验证基本错误类(第二个参数)是否具有

的验证
BaseError::errorCode = 3

我该怎么做? 只有参数捕获吗?
感谢。

2 个答案:

答案 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) );