如何将多个ArgumentMatchers传递给Mockito

时间:2013-03-08 20:58:53

标签: java mocking mockito argument-matcher argument-matching

我有两个自定义的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);

3 个答案:

答案 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