3

我正在尝试验证 Json 对象。我使用https://code.google.com/p/rest-assured/wiki/Downloads?tm=2

import static com.jayway.restassured.module.jsv.JsonSchemaValidator.matchesJsonSchemaInClasspath;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.Test;

public class testClass {


    @Test public void
    validates_schema_in_classpath() {
        // Given
        String JsonString = "{\"isSuccess\":false}";// Greeting response

        // Then
        assertThat(JsonString, matchesJsonSchemaInClasspath("greeter-schema.json"));
    }
}

greeter-schema.json:http ://cs606926.vk.me/v606926718/15603/0Kauo1bTDi8.jpg

即使 JsonString 不等于这个“{\”isSuccess\“:false}”,我每次都有好的结果。

例如,当 JsonString="{\"isSuccess\":false},{\"isFalse\":true}" 或 "{\"isSuccess\":false},testetstets" 时我得到 OK 结果

4

2 回答 2

3

使用 RestAssured 的模式验证仅断言该值存在。要针对某个值进行断言,您必须准确指出您正在寻找的名称(在本例中为 isSuccess)以获取该值。然后验证这个派生值:

assertThat().body("isSuccess", equalTo(false));

这个功能实际上是 RestAssured 的目的,这里有很多关于它的信息: https ://github.com/jayway/rest-assured/wiki/Usage#json-using-jsonpath

于 2016-01-27T22:32:26.140 回答
1

您的 JSON 模式仅检查属性“isSuccess”是否存在,而不是它必须为真或假。你也可以用 json 模式来做到这一点,但我不知道。您可能只需 google 即可查看http://json-schema.org

于 2014-04-22T05:38:18.150 回答