java – Ambiguous Mockito – 0匹配预期,1记录(InvalidUseOfMatchersException)

我面临一个非常奇怪的问题.
URL = "/my/specific/url/";
 when(this.restHelperMock.post(
 eq(myEnum),eq(this.config.apiEndpoint() + URL),any(JSONObject.class))).thenReturn(new JSONObject(myDesiredJsonContent));

甚至包含

URL = "/my/specific/url/";
 when(this.restHelperMock.post(
 eq(myEnum),contains(this.config.apiEndpoint() + URL),any(JSONObject.class))).thenReturn(new JSONObject(myDesiredJsonContent));

给我

org.mockito.exceptions.misusing.InvalidUSEOfMatchersException: 
Invalid use of argument matchers!
0 matchers expected,1 recorded:

This exception may occur if matchers are combined with raw values:
    //incorrect:
    someMethod(anyObject(),"raw String");
When using matchers,all arguments have to be provided by matchers.
For example:
    //correct:
    someMethod(anyObject(),eq("String by matcher"));

For more info see javadoc for Matchers class.

即使我不使用RAW表达式.
奇怪的是,如果我将contains方法更改为:

URL = "/my/specific/url/";
 when(this.restHelperMock.post(
 eq(myEnum),contains(URL),any(JSONObject.class))).thenReturn(new JSONObject(myDesiredJsonContent));

省略端点,它的工作原理.

Config和RestHelper都被嘲笑:

this.restHelperMock = mock(RESTHelper.class);
this.config = mock(MyBMWConfiguration.class);

when(this.config.apiEndpoint()).thenReturn("http://host:port/api");

ApiEndpoint的URL等于我想要模拟的,
即使它不会,我应该得到一个NullpointerException,因为虚假的嘲弄.
但在这里,我没有任何想法.

谢谢您的回答.

解决方法

问题似乎是你在eq(…)调用期间调用了一个模拟方法this.config.apiEndpoint().尝试简单地将完整的URL放在那里(host:port / api / my / specific / url)而不是在那里调用另一个模拟,这可能会混淆Mockito,因为它依赖于内部状态进行模拟.

说实话,我不是那么深入Mockito,我可以解释为什么会发生这种情况,但有一天我可能会尝试调试它;-)

编辑:奇怪的是,我似乎无法用更简单的测试用例重现它.这里似乎有更多,而不是满足眼睛.

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...