java - 为什么我会从 Java 中的 Mock Server 获得 Assert Not Equal?
问题描述
我必须创建一个模拟服务器期望来检查传入请求是否等于模拟请求。我的问题是 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。它是怎么发生的?
谢谢,大顺。
解决方案
鉴于缺乏任何答案......这里有一个猜测:
在createdExpectation( )
方法中,而不是
.withHeader("\"Content-type\", \"application/json\"")
它一定要是
.withHeader("Content-type", "application/json")
或者
.withHeader(header("Content-type", "application/json"))
推荐阅读
- python - Python While循环在一段时间后挂起,按下(Enter)时继续?
- python - 从列表中删除括号和数字
- django - 如何在 ViewSet 视图中使用自定义过滤器?Django DRF
- javascript - 正则表达式模式仅识别一组大括号
- python - 如何为 libpostal(地址解析器)库创建 docker 文件?
- .htaccess - htaccess 重定向与可变路径匹配
- python - 浏览网站的路径级别
- revit-api - 模型衍生 API revit 到 dwg
- python - 如何对熊猫中的新列进行分组,计算是否(或求和)?
- c# - 屏蔽 IQueryable 上的数据,但保留过滤屏蔽数据的能力