たとえば、応答としてJSONがあります。
[{"id":1,"name":"text"},{"id":2,"name":"text"}]}
応答にカスタムオブジェクトが含まれているかどうかを確認したいと思います。例えば:
Person(id=1, name=text)
私は解決策を見つけました:
Person[] persons = response.as(Person[].class);
assertThat(person, IsArrayContaining.hasItemInArray(expectedPerson));
私はこのようなものが欲しいです:
response.then().assertThat().body(IsArrayContaining.hasItemInArray(object));
これに対する解決策はありますか?
ご協力いただきありがとうございます。
body()
メソッドは、パスとHamcrestマッチャーを受け入れます( javadocs を参照)。
だから、あなたはこれを行うことができます:
response.then().assertThat().body("$", customMatcher);
例えば:
// 'expected' is the serialised form of your Person
// this is a crude way of creating that serialised form
// you'll probably use whatever JSON de/serialisaiotn library is in use in your project
Map<String, Object> expected = new HashMap<String, Object>();
expected.put("id", 1);
expected.put("name", "text");
response.then().assertThat().body("$", Matchers.hasItem(expected));
この場合、jsonスキーマ検証を使用することもできます。これを使用することで、JSON要素に個別のルールを設定する必要がなくなります。
見てください 安心したスキーマ検証
get("/products").then().assertThat().body(matchesJsonSchemaInClasspath("products-schema.json"));