我必须创建一个模拟服务器期望来检查传入请求是否等于模拟请求。我的问题是 Json,它与我提供的期望相同,但我得到了
java.lang.AssertionError:
Expected :401
Actual :404
期待的Json -
String rechargeRequest = "{\n" +
" \"RechargeRequest\":{\n" +
" \"RechargeSerialNo\":\"2645\",\n" +
" \"RechargeChannelID\":\"3\",\n" +
" \"RechargeObj\":{\n" +
" \"SubAccessCode\":{\n" +
" \"PrimaryIdentity\":\"763500001\"\n" +
" }\n" +
" },\n" +
" \"RechargeInfo\":{\n" +
" \"CashPayment\":[\n" +
" {\n" +
" \"Amount\":\"30\"\n" +
" }\n" +
" ]\n" +
" }\n" +
" }\n" +
"}\n";
我的期望是——
private void createdExpectation( ){
new MockServerClient("127.0.0.1", 1081)
.when(
request()
.withMethod("POST")
.withPath("/cbs/billingmgt/v1.0/Account/Recharge")
.withHeader("\"Content-type\", \"application/json\"")
.withBody(rechargeRequest))
.respond(
response()
.withStatusCode(401)
.withBody("Done")
);
}
我的 HttpResponse 类创建请求 -
private org.apache.http.HttpResponse hitTheServerWithPostRequest(String jsonString) {
String url = "http://127.0.0.1:1081/cbs/billingmgt/v1.0/Account/Recharge";
CloseableHttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url);
post.setHeader("Content-type", "application/json");
org.apache.http.HttpResponse response=null;
try {
StringEntity stringEntity = new StringEntity(jsonString);
post.getRequestLine();
post.setEntity(stringEntity);
response=client.execute(post);
} catch (Exception e) {
throw new RuntimeException(e);
}
return response;
}
我的测试方法 - 我创建示例 Json 以传递给期望
@Test
public void test() throws JsonProcessingException {
JsonRechargeRequest jsonRechargeRequest = new JsonRechargeRequest();
RechargeRequest request = new RechargeRequest();
request.setRechargeSerialNo("2645");
request.setRechargeChannelID("3");
RechargeObj rechargeObj = new RechargeObj();
SubAccessCode subAccessCode = new SubAccessCode();
subAccessCode.setPrimaryIdentity("763500001");
rechargeObj.setSubAccessCode(subAccessCode);
RechargeInfo rechargeInfo = new RechargeInfo();
CashPayment cashPayment = new CashPayment();
cashPayment.setAmount("30");
rechargeInfo.setCashPayments(Collections.singletonList(cashPayment));
request.setRechargeObj(rechargeObj);
request.setRechargeInfo(rechargeInfo);
jsonRechargeRequest.setRechargeRequest(request);
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(jsonRechargeRequest);
//Calling Expectation
createdExpectation();
org.apache.http.HttpResponse response = hitTheServerWithPostRequest(jsonString);
assertEquals(401, response.getStatusLine().getStatusCode());
}
在这个Test方法中assertEquals Expect 401但是从hitTheServerWithPostRequest方法的响应响应状态为404。它是怎么发生的?
谢谢,大顺。