ฉันจะพยายามอธิบายโดยใช้ตัวอย่างที่นี่:
// 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());
}
ที่นี่เรามีวัตถุจริงเริ่มต้นlistซึ่งเราได้เพิ่มองค์ประกอบหนึ่งและขนาดที่คาดว่าจะเป็นหนึ่ง
เราสอดแนมความหมายที่แท้จริงของวัตถุที่เราสามารถแนะนำวิธีการที่จะค้างอยู่ ดังนั้นเราจึงประกาศว่าเราใช้วิธีการขีดฆ่า - size()บนวัตถุสอดแนมซึ่งจะส่งคืน 10 ไม่ว่าขนาดจริงจะเป็นเท่าใดก็ตาม
สรุปคุณจะสอดแนม วัตถุจริงและต้นขั้ว บางส่วนของวิธีการ