gpt4 book ai didi

java - 模拟方法没有被调用 - java

转载 作者:行者123 更新时间:2023-11-30 02:40:01 26 4
gpt4 key购买 nike

我是 Mockito 的新手,请帮助理解基础知识。

根据我的说法,当 mocked.add(6,7) 被调用时,上面的代码应该打印 5 ,但是 add() 方法没有被调用,并且代码打印 0.. 为什么?这段代码有什么解决方案吗?

    import org.mockito.Mockito;

import static org.mockito.Mockito.*;


class Calc{

int add(int a,int b){
System.out.println("add method called");
return a+b;
}

}

      class MockTest{
public static void main(String[] args) {
Calc mocked=mock(Calc.class);
when(mocked.add(2,3)).thenReturn(5);
System.out.println(mocked.add(6,7));
}
}

最佳答案

为了获得 5 的结果,您必须传递与设置 when..then 时一样的确切参数。否则mockito将返回一个“默认”值(整数为0:

What values do mocks return by default?

In order to be transparent and unobtrusive all Mockito mocks by default return 'nice' values. For example: zeros, falseys, empty collections or nulls. Refer to javadocs about stubbing to see exactly what values are returned by default.

如果您想为任何整数返回 5,请使用:

when(mocked.add(Mockito.any(Integer.class),Mockito.any(Integer.class))).thenReturn(5);

关于java - 模拟方法没有被调用 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42039262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com