Tôi sẽ cố gắng giải thích bằng một ví dụ ở đây:
// Difference between mocking, stubbing and spying
@Test
public void differenceBetweenMockingSpyingAndStubbing() {
List list = new ArrayList();
list.add("abc");
assertEquals(1, list.size());
List mockedList = spy(list);
when(mockedList.size()).thenReturn(10);
assertEquals(10, mockedList.size());
}
Ở đây, chúng tôi đã có đối tượng thực ban đầu list
, trong đó chúng tôi đã thêm một yếu tố và kích thước dự kiến là một.
Chúng tôi thám ý nghĩa đối tượng thực sự mà chúng tôi có thể hướng dẫn những phương pháp để được stubbed . Vì vậy, chúng tôi đã tuyên bố rằng chúng tôi vẫn còn phương pháp - size()
trên đối tượng gián điệp sẽ trả về 10, bất kể kích thước thực tế là bao nhiêu.
Tóm lại, bạn sẽ theo dõi đối tượng thực và khai thác một số phương thức .