我在AWS(Amazon Web Service),mockito和Java junit4环境中工作。在我的课堂上,我使用一种将Request对象作为参数的方法,并根据该对象获得响应。以下是我的代码,
private Response<String> getStringResponse(Request<?> request) {
try {
AmazonHttpClient client = new AmazonHttpClient(new ClientConfiguration());
ExecutionContext executionContext = new ExecutionContext(true);
HttpResponseHandler<AmazonClientException> handler = getErrorResponseHandler();
HttpResponseHandler<String> responseHandler = getHttpResponseHandler();
RequestExecutionBuilder requestExecutionBuilder = client.requestExecutionBuilder();
requestExecutionBuilder = requestExecutionBuilder.executionContext(executionContext);
requestExecutionBuilder = requestExecutionBuilder.request(request);
requestExecutionBuilder = requestExecutionBuilder.errorResponseHandler(handler);
Response<String> response = requestExecutionBuilder.execute(responseHandler);
return response;
} catch (Exception e) {
AppLogger.getLogger().error("Exception in :: classname :: getStringResponse() ::");
throw e;
}
}
我想做的是,我想模拟整个场景,这意味着在任何请求下,无论请求是什么,我的方法都应为我提供所需的自定义响应对象。我从我的junit测试中调用此方法。那么有什么可以做的吗?
在使用JUnit和Mockito测试此方法之前,应编写干净且可测试的代码。重要的是,您必须删除方法内部的所有依赖关系,并从外部对其进行初始化。例如,
private Response<String> getStringResponse(Request<?> request,
AmazonHttpClient client,
ExecutionContext executionContext,
HttpResponseHandler<AmazonClientException> handler,
HttpResponseHandler<String> responseHandler) {
try {
RequestExecutionBuilder requestExecutionBuilder = client.requestExecutionBuilder()
.executionContext(executionContext)
.request(request)
.errorResponseHandler(handler);
Response<String> response = requestExecutionBuilder.execute(responseHandler);
return response;
} catch (Exception e) {
AppLogger.getLogger().error("Exception in :: classname :: getStringResponse() ::");
throw e;
}
}
现在,您可以通过模拟上述依赖性来对其进行测试。
@Mock
AmazonHttpClient client;
@Mock
ExecutionContext executionContext;
@Mock
HttpResponseHandler<AmazonClientException> handler;
@Mock
HttpResponseHandler<String> responseHandler;
// For request, you can create a custom one or use mock data
Request<?> request;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
// other setups
}
@Test
public void getStringResponseTest() {
// you can test now
yourCall.getStringResponse(request, client, executionContext, handler, responseHandler);
// verify whatever you want....
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句