I need some advices on how to mock a rest api. My application is in MVP architecture.
My interface for API:
public interface MyAPI {
@GET(\"{cmd
Thanks for @Ilya Tretyakov, I came out this solution:
private ArgumentCaptor<Subscriber<Response>> subscriberArgumentCaptor;
@Test
public void testLoginWithCorrectUserNameAndPassword() throws Exception {
mLoginPresenter.login("user@email.com","password");
// create the mock Response object
Response response = ......
verify(service, times(1)).login(
subscriberArgumentCaptor.capture(),
stringUserNameCaptor.capture(),
stringPasswordCaptor.capture()
);
subscriberArgumentCaptor.getValue().onNext(response);
verify(view).loginSuccess();
}
You can do it in next way:
@Test
public void testLoginWithCorrectUserNameAndPassword() throws Exception {
// create or mock response object
when(service.login(anyString(), anyString(), anyString).thenReturn(Observable.just(response));
mLoginPresenter.login("user@email.com","password");
verify(view).loginSuccess();
}
@Test
public void testLoginWithIncorrectUserNameAndPassword() throws Exception {
// create or mock response object
when(service.login(anyString(), anyString(), anyString).thenReturn(Observable.<Response>error(new IOException()));
mLoginPresenter.login("user@email.com","password");
verify(view).showError(anyString);
}