Я пытаюсь создать единичный корпус для модификации 2 обратных вызовов в android. Я использую для тестирования mockito, MockWebServer и MockResponse.Как я могу выполнить модульное тестирование для повторных обратных вызовов?
public class LoginFragment extends Fragment {
/**
* Actualiza el numero telefonico para el usuario
*
* @param phoneNumber
*/
public void phoneNumber(String phoneNumber) {
HttpService service = Service.createService(HttpService.class, TOKEN);
Call<Void> call = service.phonumber(phoneNumber, new User("", ""));
call.enqueue(callback());
}
/**
* @return Callback<Void>
*/
public Callback<Void> callback() {
return new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
dummy();
} else {
Log.e(TAG, "problema");
}
}
@Override
public void onFailure(Call<Void> call, Throwable t) {
Log.e(TAG, " " + t);
}
};
}
public void dummy(){
System.out.println(" called");
}
}
Мой UniTest класс:
@RunWith(MockitoJUnitRunner.class)
public class TestLoginFragment {
MockWebServer mockWebServer;
@Before
public void setup() throws Exception {
spyLoginFragment = mock(LoginFragment.class);
mockWebServer = new MockWebServer();
}
@Test
public void testDummyIsCalled() {
spyLoginFragment.phoneNumber("3333335");
mockWebServer.enqueue(new MockResponse().setResponseCode(201));
verify(spyLoginFragment, times(1)).dummy();
}
}
Но при запуске теста я получаю:
TestLoginFragment > testDummyIsCalled FAILED
Wanted but not invoked:
loginFragment.dummy();
Я новый тест решений обратного вызова, как я могу проверить, что dummy()
был назван ?
Это будет намного проще, если вы просто вызовете execute(), который будет выполнять запрос синхронно. Что вы планируете тестировать? Что работает клиент-клиент, или ответ вашего приложения на его успех/неудачу? – fractalwrench
привет @ fractalwrench, я пытаюсь проверить ответ (успех/неудачу), проверяя, что functon dummy() был вызван. как я могу назвать execute()? – Hash
Просто выполните call.execute(), стоит ли проверять документы дооснащения, если вы не уверены в различии между execute() и enqueue() – fractalwrench