ระวังว่า Mockito.when (Object) แนะนำให้ทำการขัดเพราะมันเป็นประเภทที่ปลอดภัยและอ่านง่าย (โดยเฉพาะอย่างยิ่งเมื่อการขัดกันโทรติดต่อ)
นี่คือโอกาสที่หายากเหล่านั้นเมื่อ doReturn () มีประโยชน์:
1.เมื่อการสอดแนมวัตถุจริงและการเรียกใช้วิธีการจริงกับสายลับจะทำให้เกิดผลข้างเคียง
List list = new LinkedList(); List spy = spy(list);
// Impossible: วิธีการจริงเรียกว่า spy.get (0) พ่น IndexOutOfBoundsException (รายการยังว่างเปล่า)
when(spy.get(0)).thenReturn("foo");
// คุณต้องใช้ doReturn () เพื่อทำการขัดถู:
doReturn("foo").when(spy).get(0);
2. การเอาชนะการขัดข้อยกเว้นก่อนหน้านี้:
when(mock.foo()).thenThrow(new RuntimeException());
// Impossible: เมธอด exception-stubbed foo () ถูกเรียกดังนั้น RuntimeException จะถูกส่งออกมา when(mock.foo()).thenReturn("bar");
// คุณต้องใช้ doReturn () เพื่อทำการขัดถู:
doReturn("bar").when(mock).foo();
สถานการณ์ข้างต้นแสดงให้เห็นถึงการแลกเปลี่ยนของไวยากรณ์ที่หรูหราของ Mockito โปรดทราบว่าสถานการณ์นั้นหายากมาก การสอดแนมควรเป็นระยะ ๆ และการเอาชนะข้อยกเว้นนั้นยากมาก ไม่ต้องพูดถึงว่าโดยทั่วไปการขัดถูมากเกินไปนั้นเป็นกลิ่นที่อาจเกิดจากรหัสซึ่งชี้ให้เห็นว่าการถูมากเกินไป
doReturn()
มีประโยชน์