我有两个自定义的ArgumentMatchers,我希望我的mock能根据参数值返回不同的值。
示例:
when(myMock.method(new ArgMatcher1()).thenReturn(false);
when(myMock.method(new ArgMatcher2()).thenReturn(true);
不幸的是,第二次调用when()会导致异常。这对我来说是有道理的,因为如果参数与ArgumentMatchers匹配,Mockito将不知道是返回true还是false。在Mockito有办法做到这一点吗?它甚至可能是这样的:
when(myMock.method(new ArgMatcher2()).thenReturn(false).elseReturn(true);
答案 0 :(得分:0)
我不确定您的匹配器是如何编码的,但当然支持两种不同的匹配器,也许您使用的方法不能通过Mockito(最终)来模拟。
同样对于记录,可以告诉存根以不同的方式返回不同的返回值:
when(myMock.method(new ArgMatcher2()).thenReturn(false, false, true).thenReturn(true);
答案 1 :(得分:0)
如果您有兴趣从Mockito返回默认值,那么我已经实现了这样的目标:
when(myMock.myMethod(any())).thenReturn(true);
when(myMosk.myMethod("some other argumetn")).thenReturn(true);
它对你有帮助吗?很难说,我没有像使用 new 关键字那样使用匹配器。可能是,Mockito不太了解您的自定义匹配器。
答案 2 :(得分:0)
切换到语法:
types.new_class