我有一个post API,我希望使用JsonSchemaValidator的方法,因为我希望通过执行断言验证整个响应而不是选择响应
我尝试过使用
我的reposne将成为现实,方法正在通过,但我的架构文件没有检查或验证
public void directLoginWihSchemaValiadtor(){
File file = new File("C:/Users/abeey/git/SlingAppWebService/Configurations/JsonSchemaValidator_DirectLogin_AWS.json");
jsonasmap.put("contactNo", "some number");
jsonasmap.put("loginType","0");
jsonasmap.put("appid","2");
jsonasmap.put("co*****ode","IN");
JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder().
setValidationConfiguration(ValidationConfiguration.newBuilder().freeze()).freeze();
given().contentType(ContentType.JSON).body(jsonasmap).when().
post("https://60i*****.execute-api.us-west-2.amazonaws.com/some-api").
then().assertThat().
body(JsonSchemaValidator.matchesJsonSchema(file))).
log().all();
jsonasmap.clear();
}
//体(JsonSchemaValidator.matchesJsonSchemaInClasspath( “JsonSchemaValidator_DirectLogin_AWS.json”)。使用(jsonSchemaFactory))
我尝试使用jsonSchemaFactory来做到这一点,但我没有得到关于设置为draftversion的内容或从哪里获取它
我是新手,如果您发现这个问题过于简单而无法被问及,请耐心等待
答案 0 :(得分:2)
对于这种情况,我通常会这样做:
使用架构生成器并为json body创建架构(我使用此工具json-schema-generator)
将生成的json模式放在类路径中(例如test / resources)
将此代码用作REST Assured test的一部分:
。体(matchesJsonSchemaInClasspath(" your_schema_name.json&#34))
如果您想确保架构验证正常,您可以编辑架构文件并将任何必填字段的类型更改为其他字段,并查看您的测试是否会失败。
您可以参考我的this post查看一些代码示例。