所以,我正在创建一个模拟对象作为类级别的静态变量,如此...在一个测试中,我想Foo.someMethod()
返回一个特定的值,而在另一个测试中,我希望它返回一个不同的值.我遇到的问题是,似乎我需要重建模拟才能使其正常工作.我想避免重建模拟,并在每次测试中使用相同的对象.
class TestClass {
private static Foo mockFoo;
@BeforeClass
public static void setUp() {
mockFoo = mock(Foo.class);
}
@Test
public void test1() {
when(mockFoo.someMethod()).thenReturn(0);
TestObject testObj = new TestObject(mockFoo);
testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value
}
@Test
public void test2() {
when(mockFoo.someMethod()).thenReturn(1);
TestObject testObj = new TestObject(mockFoo);
testObj.bar(); // calls mockFoo.someMethod(), STILL receiving 0 as the value, instead of expected 1.
}
}
Run Code Online (Sandbox Code Playgroud)
在第二个测试中,当调用testObj.bar()时,我仍然接收0作为值...解决此问题的最佳方法是什么?请注意,我知道我可以Foo
在每个测试中使用不同的模拟,但是,我必须将多个请求链接起来mockFoo
,这意味着我必须在每个测试中进行链接.