我编写了以下 JUnit 测试,它使用ArgumentMatchers
.
MyClass classUnderTest = new MyClass();
class AnyBooleanMatcher extends ArgumentMatcher<Boolean> {
public boolean matches(Object argument) {
return ((Boolean) argument).equals(Boolean.TRUE);
}
}
class MyObjectMatcher extends ArgumentMatcher<MyObject> {
public boolean matches(Object argument) {
return ((MyObject) argument).getValue().equals("123");
}
}
final Service mockService = mock(Service.class);
when(mockService.search(Matchers.argThat(new MyObjectMatcher()),
Matchers.argThat(new AnyBooleanMatcher())));
classUnderTest.callMethod(mock(ActionEvent.class));
verify(mockService).search(Matchers.argThat(new MyObjectMatcher()),
Matchers.argThat(new AnyBooleanMatcher()));
NullPointerException
不幸的是,在when
声明中我总是得到一个, 。
我什至知道为什么:argThat
返回null
,如 JavaDoc 中所指定。但是我不知道为什么我的测试不起作用,因为示例中的测试- 以完全相同的方式建模 - 起作用。