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

Bic*_*ick 2 java mockito

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

verify(MyMock).handleError(any(ICallBack.class),any(BaseError.class) );
Run Code Online (Sandbox Code Playgroud)

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

BaseError::errorCode = 3
Run Code Online (Sandbox Code Playgroud)

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

Raf*_*ter 5

只需为第二个参数使用适当的匹配器.例如:

verify(MyMock).handleError(any(ICallBack.class), eq(new BaseError(3)));
Run Code Online (Sandbox Code Playgroud)

假设此实例将等于BaseError具有此错误代码的任何实例.您也可以实现自定义ArgumentMatcher<BaseError>和实现,你回逻辑true如果给定的情况下errorCode3通过例如:

verify(MyMock).handleError(any(ICallBack.class), 
                           argThat(new ArgumentMatcher<BaseError> {
   @Override
   public boolean matches(Object baseError) {
     return ((BaseError) baseError).errorCode == 3;
   }
}));
Run Code Online (Sandbox Code Playgroud)