Tôi có một phương thức riêng trong lớp thử nghiệm của mình để xây dựng một Bar
đối tượng thường được sử dụng . Hàm Bar
tạo gọi someMethod()
phương thức trong đối tượng giả định của tôi:
private @Mock Foo mockedObject; // My mocked object
...
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
}
Trong một số phương pháp thử nghiệm của tôi, tôi muốn kiểm tra someMethod
cũng được gọi bằng thử nghiệm cụ thể đó. Một cái gì đó như sau:
@Test
public void someTest() {
Bar bar = getBar();
// do some things
verify(mockedObject).someMethod(); // <--- will fail
}
Điều này thất bại, bởi vì đối tượng bị chế giễu đã someMethod
gọi hai lần. Tôi không muốn các phương thức kiểm tra của mình quan tâm đến các tác dụng phụ của getBar()
phương pháp của mình , vậy liệu có hợp lý khi đặt lại đối tượng giả của tôi vào cuối getBar()
không?
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
reset(mockedObject); // <-- is this OK?
}
Tôi hỏi, bởi vì tài liệu cho thấy việc đặt lại các đối tượng giả thường là dấu hiệu của các xét nghiệm xấu. Tuy nhiên, điều này cảm thấy ổn với tôi.
Thay thế
Sự lựa chọn thay thế dường như đang gọi:
verify(mockedObject, times(2)).someMethod();
mà theo tôi buộc mỗi bài kiểm tra phải biết về những kỳ vọng getBar()
, không có lợi.