首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Mockito:如何准备不同的答案

Java Mockito:如何准备不同的答案
EN

Stack Overflow用户
提问于 2019-06-20 07:57:20
回答 1查看 24关注 0票数 0
int calledCnt = 0;
doAnswer(i -> {
    if (calledCnt == 0) {
        calledCnt += 1;
        throw new InternalServerErrorException("test");
    }
    return false;
}).when(myClass.someFunction(any()));

我想要存根一个调用,如果它最初被调用,抛出一个异常,但任何后续调用都将返回false;

上面的调用程序抱怨"Variables used in lambda should be final or effectively final"

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-20 08:00:39

或者使calledCnt成为可变的东西(例如,具有单个元素的int[],或者AtomicInteger),或者将答案声明为匿名类,这样您就可以添加一个成员变量:

doAnswer(new Answer<Boolean>() {
  int calledCnt = 0;

  @Object public Boolean answer(InvocationOnMock invocation) {
    if (calledCnt == 0) {
      calledCnt += 1;
      throw new InternalServerErrorException("test");
    }
    return false;
  }
}).when(...);

(实际上,它不一定是匿名类,它可以是任何类型的类。使用匿名类非常方便,因为它将所有内容都本地化到要使用的位置。)

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

https://stackoverflow.com/questions/56677335

复制
相关文章

相似问题

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