Xin lưu ý rằng Mockito.when (Object) luôn được khuyến nghị sử dụng vì nó là loại đối số an toàn và dễ đọc hơn (đặc biệt là khi ngắt các cuộc gọi liên tiếp).
Dưới đây là những dịp hiếm hoi khi doReturn () trở nên tiện dụng:
1. Khi gián điệp các đối tượng thực và gọi các phương thức thực trên một gián điệp mang lại tác dụng phụ
List list = new LinkedList(); List spy = spy(list);
// Không thể: phương thức thực được gọi là spy.get (0) ném IndexOutOfBoundException (danh sách vẫn trống)
when(spy.get(0)).thenReturn("foo");
// Bạn phải sử dụng doReturn () để khai thác:
doReturn("foo").when(spy).get(0);
2. Ghi đè một ngoại lệ trước đó:
when(mock.foo()).thenThrow(new RuntimeException());
// Không thể: phương thức foo () stubbed ngoại lệ được gọi để RuntimeException được ném. when(mock.foo()).thenReturn("bar");
// Bạn phải sử dụng doReturn () để khai thác:
doReturn("bar").when(mock).foo();
Các kịch bản trên cho thấy một sự đánh đổi của cú pháp tao nhã của Mockito. Lưu ý rằng các kịch bản là rất hiếm, mặc dù. Hoạt động gián điệp nên lẻ tẻ và ghi đè ngoại lệ là rất hiếm. Không phải đề cập đến việc nói chung quá nhiều stubbing là một mùi mã tiềm năng chỉ ra quá nhiều stubbing.
doReturn()
hữu ích.