簡體   English   中英

Junit assertThat 比較 JsonObject

[英]Junit assertThat compare JsonObject

我是 junit 的初學者我想用動態數據測試兩個 JsonObject,尤其是日期。

我有一個屬性“CreationDate”,在第一個 json 我使用 localDateTime“now()”另一方面,jsonTest 文件包含一個文字日期。

JsonObject actual = (JsonObject) parser.parse(myListResponse.readEntity(String.class));
JsonObject expected = (JsonObject) parser.parse(fixture("path/jsonTest.json"));
    
assertThat(actual , is(expected));

我如何解決這個問題以獲得有效的測試

您必須通過擴展 BaseMatcher 來創建自定義 Matcher。 然后,您可以使用所需的字段進行比較/匹配。 例如:

static class JsonObjectMatcher extends BaseMatcher<JsonObject> {
    private final JsonObject target;

    public static JsonObjectMatcher customMatchesTheJson(final JsonObject expected) {
        return new JsonObjectMatcher(expected);
    }

    private JsonObjectMatcher(JsonObject target) {
        this.target = target;
    }

    @Override
    public boolean matches(Object o) {
        if (o instanceof JsonObject) {
            final JsonObject other = (JsonObject) o;
            // TODO: 5/11/21 Custom compare target to other
        }
        return false;
    }

    @Override
    public void describeTo(Description description) {
        // TODO: 5/11/21 Add to the description
    }
}

您可以使用它來匹配如下:

assertThat(actual, JsonObjectMatcher.customMatchesTheJson(expected));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM