我正在使用 Mockito 3.1.0。
我正在尝试用以下语法模拟我的方法:
when(mockedObject.myMethod(any(HttpServletRequest.class)).thenReturn(1);
myMethod
很简单:
public Integer myMethod(HttpServletRequest request) {
return 0;
}
在我正在测试的方法中,它只是通过以下方式调用:
int r = myObject.myMethod(request);
但我得到:
org.mockito.exceptions.misusing.PotentialStubbingProblem:
Strict stubbing argument mismatch. Please check:
- this invocation of 'myMethod' method:
mockedObject.myMethod(null);
-> at somefile.java:160)
- has following stubbing(s) with different arguments:
1. mockedObject.myMethod(null);
-> at somefileTest.java:68)
正如所解释的here https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/ArgumentMatchers.html#any-java.lang.Class- any(myClass)
仅当提供的参数为空时才起作用any()
does正如所解释的here https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/ArgumentMatchers.html#any--。就我而言,request
为空所以any(HttpServletRequest.class)
没能抓住它。
我通过改变来修复它
when(mockedObject.myMethod(any(HttpServletRequest.class)).thenReturn(1);
如果您确定它将为空,则对此
when(mockedObject.myMethod(null)).thenReturn(1);
或者如果您想捕获所有情况,请执行此操作
when(mockedObject.myMethod(any())).thenReturn(1);
另一种方法是使用ArgumentMatchers
:
when(mockedObject.myMethod(ArgumentMatchers.<HttpServletRequest>any())).thenReturn(1);
感谢@xerx593 的解释。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)