也许这是一个新手问题,但找不到答案。
我需要用 Mockito 存根一个方法。如果该方法具有“简单”参数,那么我可以做到。例如,一个带有两个参数的 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参数。
我想我必须做“一些事情”来指示 Mockito,当 mappingFilter.getColor 是 RED 并且 mappingFilter.getDoorNumber 是 any 时,它必须返回 Car1(其他两个句子也是如此)。但是怎么做?