Я новичок здесь и немного опытен в Java. Я создаю простой модульный тест, в котором загружаю какой-нибудь pdf-файл и пытаюсь сравнить его с моим локальным файлом.
final byte[] content = mockMvc.perform(
get(URL, SAMPLE_1_ID)
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsByteArray();
final byte[] expectedContent = Files.readAllBytes(Paths.get("src\\test\\resources\\my-local-file.pdf"));
assertThat(content).isEqualTo(expectedContent);
Я пытаюсь сравнить два файла PDF, которые абсолютно идентичны, но когда я использую сравнение байтов, это дает мне:
Expected :[B@1b708791
Actual :[B@42e6e4b6
На самом деле, я пытался найти, что не так, и нашел это (при использовании формата вывода String (.getContentAsString()
))
В первом файле:
trailer
<</Info 7 0 R/ID [<435536b10a5043b4c9e7a580fddc1aad><0c71af32c6741a3e5d5b226eb852934a>]/Root 6 0 R/Size 8>>
startxref
3274
%%EOF
И во втором файле:
trailer
<</Info 7 0 R/ID [<af96b826e05e3a7d865b83646cae3b40><98b845965d6bf45ee9a8faf6f6be9981>]/Root 6 0 R/Size 8>>
startxref
3274
%%EOF
Как вы можете видеть, идентификаторы разные, и поэтому у меня есть утверждение-ошибка
Я обнаружил, что идентификатор генерируется уникальным для каждого документа: https://www.oreilly.com/library/view/developing-with-pdf/9781449327903/ch01.html
Итак, я понятия не имею, как я могу сравнить эти два файла.
По умолчанию я не могу изменить ответ, поэтому, возможно, я могу использовать что-то более умное, чем сравнение байтов, что-то, что может распознавать содержимое файла и использовать только его.