RestAssured Post调用body引发错误" java.lang.AssertionError:1期望失败。预期状态代码< 200>但是< 415>。"

时间:2018-01-18 22:08:53

标签: java junit rest-assured

@Test
public void testPost() throws URISyntaxException {
    AgencyRequest agencyRequest = new AgencyRequest();
    agencyRequest.setConnectorId(1);
    agencyRequest.setJobConfig("/usr/local/workspace/test.config.xml");
    agencyRequest.setConnectorName("/usr/local/workspace/test.kjb");
    agencyRequest.setRequestId(1);
    agencyRequest.setTenantId(1);
    agencyRequest.setTenantName("Test Tenant");
    agencyRequest.setTimeZone("UTC");

    String json = new Gson().toJson(agencyRequest);
    System.out.println(json);
    System.out.println(uri + "/" + ResourceConstants.JOB_CONFIG);
    given().
    accept(ContentType.JSON).
    body(json).
    post(new URI(uri + "/" + ResourceConstants.JOB_CONFIG)).
    then().
    assertThat().
    statusCode(HttpStatus.OK_200);
}

如果我通过选择post方法和内容类型作为json和body来对Postman运行相同的测试,它会将响应状态代码设置为200.但我的单元测试未通过。在正文中,我已经尝试过如前所述传递json字符串以及尝试传递java对象,两者都失败了。

3 个答案:

答案 0 :(得分:1)

您需要在发送请求时定义请求的内容类型。考虑进行给定的更改

   .contentType(ContentType.JSON)

答案 1 :(得分:0)

尝试将此行添加到代码顶部:

.log().all()
        .config(RestAssured.config().encoderConfig(encoderconfig.appendDefaultContentCharsetToContentTypeIfUndefined(false)))
.header()....

答案 2 :(得分:0)

这个改变会起作用,试试吧。

.header("Content-Type", "application/json").contentType(ContentType.JSON).accept(ContentType.JSON)