Я здесь новичок и немного испытал 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
скриншот
Итак, я понятия не имею, как я могу сравнить эти два файла.
По умолчанию я не могу изменить ответ, поэтому, возможно, я смогу использовать что-то более умное, чем побайтовое сравнение, что-то, что может распознавать содержимое файла и использовать только его.