使用 JSON 单元断言放心响应



我目前正在使用放心和 Json-unit 来断言本地 json 文件以针对请求的放心响应。

我目前有一个带有基 uri 的类前方法。

我不知道如何做出这个断言。我正在努力解决 json 单元文档。我需要先输入文件吗?

@Test
public void ApiaryTest1() throws Exception {
when()
.get("/test")
.then()
.statusCode(200);
// compares two JSON documents
assertJsonEquals("expected/test.json", "http://apiary/test");
}

您需要:

  • 使用 JsonUnit API 读取资源
  • 将响应从放心提取到变量
  • 断言你已经在做

例:

Response response = when().get("<url>");
response
.then()
.statusCode(200);
// compares two JSON documents
assertJsonEquals(resource("resource-inside-resources-folder.json"), response.asString());

对于放心的 Kotlin DSL:

When {
get("http://nowjidev1vm01.ath.bskyb.com/calskyplussearch/health")
} Then {
statusCode(200)
} Extract {
assertJsonEquals(expectedBody, response().asString())
}

这比你想象的要容易。Rest Assures 在指定"正文匹配器"的情况下将整个正文作为字符串传递。因此,您可以直接使用json 单元的 jsonEquals匹配器:

import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
public class RestAssuredWithJsonUnit {
@Test
public void test() throws Exception {

given().when().get("/api/service/v1").
then().
statusCode(200).
body(jsonEquals(resource("resource-on-classpath.json")));
}
public static String resource(String resourceName) throws IOException {
Objects.requireNonNull(resourceName, "'null' passed instead of resource name");
return IOUtils.resourceToString(resourceName, UTF_8);
}

请注意"资源"方法的实现。ResourceUtils中提供的那个使用的是系统类加载器,不幸的是,它没有找到我的灵魂。来自commons-io的IOUtils做得很好!

相关内容

  • 没有找到相关文章

最新更新