gpt4 book ai didi

unit-testing - 使用 Mockito 多次调用相同的方法和不同的输出

转载 作者:行者123 更新时间:2023-11-28 20:02:45 28 4
gpt4 key购买 nike

我想使用 mockito 并 stub 一个方法。我希望方法基于 stub 返回不同的值。但它总是返回第一个输出。以下是我的设置

Class Controller{    //this is singleton class

private final Foo foo=AFacftory.getFoo(); //this variable is initialized only once for the whole life cycle

//Some code below that I want to test is here
foo.functionInFoo()



}

Class Foo{
int functionInFoo(){

}
}

Test1
Foo foo=Mockito.mock(Foo.class)
TestSettings.Provider.get().setTestBeanProvider(Foo.class, foo);
Mockito.when(foo.functionInFoo()).thenReturn(XXX);
hitAUrl();
//do some testing here using xxx.

Test2
Foo foo=Mockito.mock(Foo.class)
TestSettings.Provider.get().setTestBeanProvider(Foo.class, foo);
Mockito.when(foo.functionInFoo()).thenReturn(YYY);
hitAUrl();
//do some testing here using YYY.

变量 foo 在整个生命周期内只被实例化一次,因为它是 Controller 的一部分。因此,当我运行我的第一个测试时, Controller 在我点击 AUrl() 时被初始化,它获得 Foo 的模拟实例并返回 XXX。但是当我运行第二个测试时,它仍然会有之前的模拟实例并再次返回 XXX。我希望它返回 YYY。如果我在 Test1 之后重新启动服务器,它会返回 YYY。但这必须在不重新启动的情况下工作。请让我知道如何解决这个问题。非常感谢任何帮助。

最佳答案

Mockito.when(foo.functionInFoo()).thenReturn(XXX, YYY);

当第一次调用 foo.functionUnFoo() 时,这将返回 XXX,此后每次调用 YYY

关于unit-testing - 使用 Mockito 多次调用相同的方法和不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30996552/

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