Mockito。メソッドの引数を検証する 質問する

Mockito。メソッドの引数を検証する 質問する

これについてグーグルで検索しましたが、関連するものは見つかりませんでした。次のようなものがあります:

Object obj = getObject();
Mockeable mock= Mockito.mock(Mockeable.class);
Mockito.when(mock.mymethod(obj )).thenReturn(null);

Testeable testableObj = new Testeable();
testableObj.setMockeable(mock);
command.runtestmethod();

mymethod(Object o)ここで、の内部で呼び出される がruntestmethod()、他のオブジェクトではなく、オブジェクト で呼び出されたことを検証しますo。ただし、検証に何を入れても、たとえば次のようにすると、常にテストに合格します。

Mockito.verify(mock.mymethod(Mockito.eq(obj)));

または

Mockito.verify(mock.mymethod(Mockito.eq(null)));

または

Mockito.verify(mock.mymethod(Mockito.eq("something_else")));

私はいつもテストに合格しています。どうすればその検証を達成できますか (可能な場合)?

ありがとう。

ベストアンサー1

代替案としてArgumentMatcherArgumentCaptor

公式の例:

ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());

捕獲者は、@キャプター注釈:

@Captor ArgumentCaptor<Person> captor;
//... MockitoAnnotations.initMocks(this);
@Test public void test() {
    //...
    verify(mock).doSomething(captor.capture());
    assertEquals("John", captor.getValue().getName());
}

おすすめ記事