Tampaknya mockito hanya memverifikasi apakah metode objek tiruan dipanggil dan objek tiruan selalu memiliki sesuatu seperti itu doReturn().when(mock object)
Tapi bisakah saya membuat objek tiruan dan mendefinisikan doReturn().when(mock object)
dan kemudian memverifikasi metode objek lain yang dipanggil?
Inilah yang ingin saya lakukan: Saya mendefinisikan mockEnvironment dan mengembalikan respons apa pun yang terjadi. Tapi kemudian saya ingin memverifikasi metode yang berbeda dari anotherObj dipanggil dalam kasus yang berbeda.
Bagaimana cara melakukannya?
public class BaseClass {
private Environment mockEnvironment;
@Test
public void testcase () {
setMockitoEnvironment();
response = foo(mockEnvironment, argument1);
verify(anotherObj).codePath1(...);
response = foo(mockEnvironment, argument2);
verify(anotherObj).codePath2(...);
}
}
//this method successfully return a response with any input
//because I do not care how response is eventually generated,
//I only care whether code path reaches createResponse() via
//code path 1 or code path 2.
private void setMockitoEnvironment() {
mockEnvironment = mock(Environment.class);
doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) {
...
return createResponse(...);
}
sumber
Beri anotasi pada objek bukan tiruan dengan
@Spy
anotasi lalu periksaverify()
. Periksa inisumber