Будьте уверены - сравните ответ json с локальным файлом json - PullRequest
0 голосов
/ 20 июня 2020

У меня есть локальный тест json файла. json

[
  {
    "id": 1,
    "title": "test1"
  },
  {
    "id": 2,
    "title": "test2"
  }
]

Класс для чтения json файла

public static String getFileContent(String fileName){
        String fileContent = "";
        String filePath = "filePath";
        try {
            fileContent = new String(Files.readAllBytes(Paths.get(filePath)));
            return fileContent;
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            return fileContent;
        }
    }

Я использую, будьте уверены, чтобы сделать запрос и получить тот же json ответ обратно

String fileContent= FileUtils.getFileContent("test.json");

    when().
       get("/testurl").
    then().
       body("", equalTo(fileContent));

Это то, что я получил из локального файла

[\r\n  {\r\n    \"id\": 1,\r\n    \"title\": \"test1\"\r\n  },\r\n  {\r\n    \"id\": 2,\r\n    \"title\": \"test2\"\r\n  }\r\n]

Это фактический ответ:

[{id=1, title=test1}, {id=2, title=test2}]

Is есть ли лучший способ сравнить эти два? Я пытаюсь сделать что-то вроде fileContent.replaceAll("\\r\\n| |\"", "");, но он просто удалил все пробелы [{id:1,title:test1},{id:2,title:test2}] Любая помощь? Или любые способы, которые просто сравнивают содержимое и игнорируют новую строку, пробел и двойные кавычки?

1 Ответ

2 голосов
/ 20 июня 2020

Вы можете использовать любой из следующих методов

JsonPath:

String fileContent = FileUtils.getFileContent("test.json");

    JsonPath expectedJson = new JsonPath(fileContent);
    given().when().get("/testurl").then().body("", equalTo(expectedJson.getList("")));

Jackson:

String fileContent = FileUtils.getFileContent("test.json");
String def = given().when().get("/testurl").then().extract().asString();

    ObjectMapper mapper = new ObjectMapper();
    JsonNode expected = mapper.readTree(fileContent);
    JsonNode actual = mapper.readTree(def);
    Assert.assertEquals(actual,expected);

GSON:

String fileContent = FileUtils.getFileContent("test.json");
String def = given().when().get("/testurl").then().extract().asString();

    JsonParser parser = new JsonParser();
    JsonElement expected = parser.parse(fileContent);
    JsonElement actual = parser.parse(def);
    Assert.assertEquals(actual,expected);
...