在Retrofit的官方存储库中有一个有用的例子:

https://github.com/square/retrofit/tree/master/retrofit-mock

在这里你会发现这个片段:

Unit Tests

During develop of app,you can send requests the server all time(or

most of time) so it is possible to live without mocked server,it

sucks but is possible. Unfortunately you are not able to write good

tests without the mock. Below there are two unit tests. Actually they

do not test anything but in simple way shows how to mock Retrofit

service using Mockito and Dagger.

@RunWith(RobolectricTestRunner.class)

public class EchoServiceTest {

@Inject

protected EchoService loginService;

@Inject

protected Client client;

@Before

public void setUp() throws Exception {

Injector.add(new AndroidModule(),new RestServicesModule(),new RestServicesMockModule(),new TestModule());

Injector.inject(this);

}

@Test

public void shouldReturnOfferInAsyncMode() throws IOException {

//given

int expectedQuantity = 765;

String responseContent = "{" +

" \"message\": \"mock message\"," +

" \"quantity\": \"" + expectedQuantity + "\"" +

"}";

mockResponseWithCodeAndContent(200,responseContent);

//when

EchoResponse echoResponse = loginService.getMessageAndQuantity("test","test");

//then

assertThat(echoResponse.getQuantity()).isEqualTo(expectedQuantity);

}

@Test

public void shouldReturnOfferInAsyncModea() throws IOException {

//given

int expectedQuantity = 2;

String responseContent = "{" +

" \"message\": \"mock message\","test");

//then

assertThat(echoResponse.getQuantity()).isEqualTo(expectedQuantity);

}

protected void mockResponseWithCodeAndContent(int httpCode,String content) throws IOException {

Response response = createResponseWithCodeAndJson(httpCode,content);

when(client.execute(Matchers.anyObject())).thenReturn(response);

}

private Response createResponseWithCodeAndJson(int responseCode,String json) {

return new Response(responseCode,"nothing",Collections.EMPTY_LIST,new TypedByteArray("application/json",json.getBytes()));

}

希望它有所帮助

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐