>

JSON Unit을 사용하여 두 개의 json 응답을 비교하고 있습니다. 그러나 UUID는 매번 동적이므로 응답이 항상 달라집니다. 다음은 "id"를 무시하지 않고 항상 다른 것으로 플래그를 지정합니다.

private void assertWithIgnore(String endpoint, String expected, int code) throws IOException {
    try {
        response.then()
                .statusCode(code)
                .contentType(ContentType.JSON);
        if (compare) {
            assertJsonEquals(response.asString(),
                    resource("expected/" + expected),
                    JsonAssert.whenIgnoringPaths("item[*].id"));
        } else {
            Assert.fail("Not comparing response, write direct to file!");
        }
    } catch (AssertionError error) {
        FileUtils.writeStringToFile(getResultFile(expected), response.prettyPrint());
        failures.put(baseURL + basePath + endpoint, response);
        throw error;
    }
}

다음은 JSON의 작은 예입니다.

{
"item": [
{
"id": "1",
"title": "Hello"
}
]
}

  • 답변 # 1

    다음을 통해 위의 문제를 해결했습니다.

    JsonAssert.setOptions(IGNORING_VALUES);
    
    

  • 답변 # 2

    JsonAssert와 함께 작동하면 ... 준비 되었습니까?

    ArrayValueMatcher<Object> arrayValueMatcher = new ArrayValueMatcher<>(new CustomComparator(JSONCompareMode.LENIENT, new Customization("item[*].id", new ValueMatcher<Object>() {
                        @Override
                        public boolean equal(Object o1, Object o2) {
                            return true;
                        }
                    })));
    Customization arrayValueMatcherCustomization = new Customization("item", arrayValueMatcher);
    
    CustomComparator customArrayValueComparator = new CustomComparator(JSONCompareMode.LENIENT, arrayValueMatcherCustomization);
    
    JSONAssert.assertEquals(expect, actual, customArrayValueComparator);
    
    

    라이브러리 버전 1.5.0을 사용하고 있습니다

  • 이전 java - 고유 한 난수를 반환하는 함수를 만드는 방법은 무엇입니까?
  • 다음 macos mojave - 아카이버 (ar) 인터페이스를 확인할 때 /configure 스크립트가 실패 함