Posted at

Mockitoでorg.mockito.exceptions.misusing.InvalidUseOfMatchersException

More than 1 year has passed since last update.

Mockitoを使ったテストで

when(hoge.fuga("aaa",0)).thenReturn(1)

みたいなことを書きたいとき。

第二引数の0は何が入っても同じ返り値使いたいからorg.mockito.MatchersanyInt()を使いたいのでこう直すとする

when(hoge.fuga("aaa",anyInt())).thenReturn(1)

すると

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 

Invalid use of argument matchers!
5 matchers expected, 4 recorded:
//略

This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));

エラーで怒られる。

when(hoge.fuga(eq("aaa"),anyInt())).thenReturn(1)

これにすると解決。

anyInt()などのmatcherを使いたいときはすべての引数をmatcherのメソッドで書く必要があるみたい。

中身がどうなってるのかさっぱりなんだけどなんでこうなるか知りたい。。。