[英]How to test POST method using Mockito
HI进行了以下测试,但我无法使其工作:
protected HttpClient mHttpClientMock;
protected HttpPost mHttpPostMock;
protected HttpResponse mHttpResponseMock;
protected StatusLine mStatusLineMock;
protected HttpEntity mHttpEntityMock;
protected ContentResolver mResolver;
protected void setUp() throws Exception {
super.setUp();
// Create mocks.
mHttpPostMock = Mockito.mock(HttpPost.class);
mHttpClientMock = Mockito.mock(HttpClient.class);
mHttpResponseMock = Mockito.mock(HttpResponse.class);
mStatusLineMock = Mockito.mock(StatusLine.class);
mHttpEntityMock = Mockito.mock(HttpEntity.class);
prepareMocks();
// Obtain Content Resolver.
mResolver = getContext().getContentResolver();
}
protected void prepareMocks() throws IOException {
// Create mocked response.
// Define expected calls.
Mockito.when(mHttpClientMock.execute(Mockito.isA(HttpPost.class)));
//Mockito.when(mHttpResponseMock.getStatusLine()).thenReturn(mStatusLineMock);
// Mockito.when(mStatusLineMock.getStatusCode()).thenReturn(HttpStatus.SC_OK);
// Mockito.when(mHttpResponseMock.getEntity()).thenReturn(mHttpEntityMock);
Mockito.when(mHttpClientMock.execute(Mockito.mock(Markup.class)));
// Mockito.when(mHttpEntityMock.writeTo(Mockito.mock(Markup.class));
}
如何准备我的(Markup.class)帖子,以便稍后进行测试。
非常感谢。致以最诚挚的问候。
就是这样!!!
InputStream jsonResponse = createJsonResponse();
// Define expected calls.
Mockito.when(mHttpClientMock.execute(Mockito.isA(HttpPost.class))).thenReturn(mHttpResponseMock);
Mockito.when(mHttpResponseMock.getStatusLine()).thenReturn(mStatusLineMock);
Mockito.when(mStatusLineMock.getStatusCode()).thenReturn(HttpStatus.SC_OK);
Mockito.when(mHttpResponseMock.getEntity()).thenReturn(mHttpEntityMock);
Mockito.when(mHttpEntityMock.getContent()).thenReturn(jsonResponse);
用Mockito测试Web服务是可行的,但是如果您要测试动态行为,最好使用RestAssured测试框架。 它主要用于测试REST Web服务,但也可以用于测试“正常” HTTP表单帖子。
如果您使用Mockito模拟所有内容,则将主要测试模拟内容,而不是真正的行为。
使用Mockito进行测试意味着您将创建模拟HTTP请求,然后将其传递给使用该请求的某种方法。 您可以创建一些断言,以检查方法是否正确解析了请求并给出了正确的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.