Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将多个ArgumentMatcher传递给Mockito_Java_Mocking_Mockito_Argument Matcher_Argument Matching - Fatal编程技术网

Java 如何将多个ArgumentMatcher传递给Mockito

Java 如何将多个ArgumentMatcher传递给Mockito,java,mocking,mockito,argument-matcher,argument-matching,Java,Mocking,Mockito,Argument Matcher,Argument Matching,我有两个自定义ArgumentMatcher,我希望我的mock根据参数值返回不同的值 例如: when(myMock.method(new ArgMatcher1()).thenReturn(false); when(myMock.method(new ArgMatcher2()).thenReturn(true); 不幸的是,第二次调用when会导致异常。这对我来说是有意义的,因为如果参数匹配两个ArgumentMatcher,Mockito将不知道是否返回true或false。莫基托有没

我有两个自定义ArgumentMatcher,我希望我的mock根据参数值返回不同的值

例如:

when(myMock.method(new ArgMatcher1()).thenReturn(false);
when(myMock.method(new ArgMatcher2()).thenReturn(true);
不幸的是,第二次调用when会导致异常。这对我来说是有意义的,因为如果参数匹配两个ArgumentMatcher,Mockito将不知道是否返回true或false。莫基托有没有办法做到这一点?它甚至可能是这样的:

when(myMock.method(new ArgMatcher2()).thenReturn(false).elseReturn(true);

我不知道你的匹配器是如何编码的,但是有两个不同的匹配器是受支持的。当然,也许你正在存根的方法不能通过mockitofinal进行模拟

对于记录,还可以告诉存根以不同的方式返回不同的返回值:

when(myMock.method(new ArgMatcher2()).thenReturn(false, false, true).thenReturn(true);

如果您对从Mockito返回默认值感兴趣,那么我已经实现了以下目标:

when(myMock.myMethod(any())).thenReturn(true);
when(myMosk.myMethod("some other argumetn")).thenReturn(true);
这对你有帮助吗?很难说,我没有像你使用新关键字那样使用匹配器。可能是Mockito不太了解您的自定义匹配程序。

切换到语法:

doAnswer(args->false).when(myMock).myMethod(any());

看,你绝对可以让两个不同的匹配者与Mockito合作。例外情况是什么?ArgMatcher1和ArgMatcher2做什么?我找到了一个更好的方法来做我需要做的事情,所以我不再追求这个选项。可能重复的