首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mockito 3任何()严格的顽固参数错配

Mockito 3任何()严格的顽固参数错配
EN

Stack Overflow用户
提问于 2021-05-25 12:51:58
回答 1查看 9.1K关注 0票数 1

我正在使用Mockito 3.1.0。

我试图用以下语法修改我的方法:

代码语言:javascript
复制
when(mockedObject.myMethod(any(HttpServletRequest.class)).thenReturn(1);

myMethod只是:

代码语言:javascript
复制
public Integer myMethod(HttpServletRequest request) {
    return 0;
}

在我正在测试的方法中,只需通过以下方法调用:

代码语言:javascript
复制
int r = myObject.myMethod(request);

但我得到了:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-25 15:22:36

正如所解释的,如果提供的参数为空,则any(myClass) any() 无法工作,只有any()执行解释的这里操作。在我的例子中,request是空的,所以any(HttpServletRequest.class)无法捕捉它。我把它改了

代码语言:javascript
复制
when(mockedObject.myMethod(any(HttpServletRequest.class)).thenReturn(1);

如果您确信它将为空,则为

代码语言:javascript
复制
when(mockedObject.myMethod(null)).thenReturn(1);

如果你想抓住所有的案子

代码语言:javascript
复制
when(mockedObject.myMethod(any())).thenReturn(1);

另一种方法是使用ArgumentMatchers

代码语言:javascript
复制
when(mockedObject.myMethod(ArgumentMatchers.<HttpServletRequest>any())).thenReturn(1);

谢谢@xerx593 593的解释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67688330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档