我想检查JSON响应至少是否有效,并且找不到使用REST保证的正确方法。
我在REST Assured examples中读到了很多关于matchesJsonSchemaInClasspath
的内容,但是我还不想编写整个JSON模式。
get("/products").
then().
assertThat().
body(matchesJsonSchemaInClasspath("products-schema.json"));
无需添加即可通过通过来检查格式错误的JSON的任何检查-因此,即使JSON无效,我也可以检查字段值,例如数组大小。
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.get;
import static org.hamcrest.core.Is.is;
public class RestEndpointTest{
@Test
public void basic_rest_check() {
get("/my_endpoint").
then().
assertThat().
body("size()", is(2)).
statusCode(200);
}
}
并且测试通过了,甚至得到了响应:
[{},{}]MALFORMED
答案 0 :(得分:0)
现在这是微不足道的,但是我发现在卡住几天后才问了我的问题。因此,解决方案是使用matchesJsonSchema
代替matchesJsonSchemaInClasspath
。
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.get;
import static io.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchema;
public class RestEndpointTest{
@Test
public void basic_rest_check() {
get("/my_endpoint").
then().
assertThat().
body(matchesJsonSchema("{}")).
statusCode(200);
}
}
最基本的架构是一个空白的JSON对象,它会限制 什么也没有,什么也不允许,什么也没有描述:
{}
还有一个选项可以创建内容为{}
的文件并由matchesJsonSchemaInClasspath
加载