多分これは初心者の質問ですが、答えが見つかりません。
Mockito でメソッドをスタブする必要があります。メソッドに「単純な」引数がある場合は、実行できます。たとえば、車の色とドアの数の 2 つのパラメーターを使用する find メソッドの例を次に示します。
when(carFinderMock.find(eq(Color.RED),anyInt())).thenReturn(Car1);
when(carFinderMock.find(eq(Color.BLUE),anyInt())).thenReturn(Car2);
when(carFinderMock.find(eq(Color.GREEN), eq(5))).thenReturn(Car3);
問題は、find 引数が複雑なオブジェクトであることです。
mappingFilter = new MappingFilter();
mappingFilter.setColor(eq(Color.RED));
mappingFilter.setDoorNumber(anyInt());
when(carFinderMock.find(mappingFilter)).thenReturn(Car1);
このコードは機能しません。エラーは「引数マッチャーの無効な使用です! 1 つのマッチャーが期待され、2 つが記録されました」です。
「find」メソッドを変更できません。MappingFilter パラメータである必要があります。
mappingFilter.getColor が RED で、mappingFilter.getDoorNumber が any の場合、Car1 を返す必要があることを Mockito に示すために「何か」を行う必要があると思います (他の 2 つの文についても同じです)。しかし、どのように?