如何使用Mockito测试POST方法

时间:2013-03-29 17:55:19

标签: java web-services unit-testing 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)帖子,以便稍后进行测试。

非常感谢你 最诚挚的问候。

2 个答案:

答案 0 :(得分:4)

就是这样!!!

        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);

答案 1 :(得分:0)

使用Mockito测试Web服务是可行的,但如果您想测试动态行为,那么使用RestAssured测试框架要好得多。它主要用于测试REST Web服务,但也可用于测试" normal" HTTP表单帖子。

如果你用Mockito模仿一切,你会主要测试你的模拟,而不是真实的行为。

使用Mockito进行测试意味着您创建模拟HTTP请求,然后将其传递给消耗该请求的某个方法。您可以创建一些断言来检查方法是否正确解析请求并给出正确的结果。