Vì vậy, tôi đang tạo một đối tượng giả như một biến tĩnh ở cấp độ như vậy ... Trong một thử nghiệm, tôi muốn Foo.someMethod()
trả về một giá trị nhất định, trong khi trong một thử nghiệm khác, tôi muốn nó trả về một giá trị khác. Vấn đề tôi gặp phải là dường như tôi cần phải xây dựng lại các bản giả để làm cho nó hoạt động chính xác. Tôi muốn tránh xây dựng lại các bản giả, và chỉ sử dụng cùng một đối tượng trong mỗi bài kiểm tra.
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.
}
}
Trong thử nghiệm thứ hai, tôi vẫn nhận được 0 là giá trị khi testObj.bar () được gọi là ... Cách tốt nhất để giải quyết vấn đề này là gì? Lưu ý rằng tôi biết tôi có thể sử dụng một giả khác nhau Foo
trong mỗi thử nghiệm, tuy nhiên, tôi phải loại bỏ nhiều yêu cầu mockFoo
, nghĩa là tôi phải thực hiện chuỗi trong mỗi thử nghiệm.