【发布时间】:2017-03-26 06:43:31
【问题描述】:
我想对一种通过外部访问管理基础架构登录用户的方法进行单元测试。我不知道如何模拟 Response response 对象。
这是我打算测试的代码:
public String login(final String username, final String password) {
String baseUrl = getOpenAMApiBaseUrl();
String path = "/openam/json/authenticate";
// Response NEEDS TO BE MOCKED SOMEHOW
Response response = jaxClient.target(baseUrl + path)
.request(MediaType.APPLICATION_JSON_TYPE)
.header(HttpHeaderField.OPENAM_USERNAME, username)
.header(HttpHeaderField.OPENAM_PASSWORD, password)
.post(Entity.json(null));
int status = response.getStatus();
String jsonResponse = response.readEntity(String.class);
if (status == Response.Status.OK.getStatusCode()) {
try (JsonReader jsonReader = Json.createReader(new StringReader(jsonResponse))) {
JsonObject jsonObject = jsonReader.readObject();
String token = jsonObject.getString("tokenId");
LOGGER.info("{} have successfully logged in", username);
return token;
} catch (NullPointerException e) {
LOGGER.info("login failed, invalid json response for {}/{}", username, password);
return null;
}
}
String message = "an error occurred during logging in, http status: {}, user: {}/{}";
if (status == Response.Status.UNAUTHORIZED.getStatusCode()) {
message = "invalid credentials, http status: {}, user: {}/{}";
}
LOGGER.info(message, status, username, password);
return null;
}
【问题讨论】:
-
你有什么尝试吗?如果是,代码在哪里?
-
我什么都没有,因为我不知道如何模拟外部休息调用。
-
是什么阻止你阅读 Mockito 教程并尝试?到目前为止,您只放弃了要求...
标签: java unit-testing junit mocking mockito