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"));
    }
}

グリータースキーマ.json: http://cs606926.vk.me/v606926718/15603/0Kauo1bTDi8.jpg

JsonStringがこの「{\"isSuccess\":false}」と等しくなくても、毎回OKの結果が得られます。

たとえば、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」が存在することのみをチェックし、true または false である必要はありません。jsonスキーマでもこれを行うことができますが、私はそれを心から知りません。おそらく、グーグルでhttp://json-schema.orgをチェックしてください。

于 2014-04-22T05:38:18.150 に答える