を使用する次の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
私はその理由さえ知っています:JavaDocで指定されているようにをargThat
返します。しかし、例のテスト(まったく同じ方法でモデル化されているnull
)が機能するのに、なぜ私のテストが機能しないのかわかりません。