2015-09-09 3 views
1

Я написал приложение REST в laravel. Он принимает полезную нагрузку Json и создает форматированный pdf, используя эти данные.Правильно создано тестирование программного обеспечения

Можно ли написать тест, который проверяет правильность формирования pdf?

Edit:

В идеале я хотел бы знать PDF не поврежден, то есть. Будет открыт в PDF-ридере.

Также было бы полезно как-то проверить содержание pdf. Например ... содержит ли это имя клиента?

Спасибо.

+0

Вы можете определить "правильный" код? –

+1

Вы ожидаете ответа «да» или «нет»? bcoz - это то, что любой может предоставить вам ваш вопрос, размещенный – spiderman

+0

Проверка PDF-документа довольно сложна, поэтому нет простого способа. Поскольку вы сами создаете документ, почему вы думаете, что это будет недействительным? Простым тестом было бы проверить размер файла и, возможно, первые несколько байтов (он должен начинаться с «% PDF»). –

ответ

1

Да, это возможно, учитывая, что один и тот же вход JSON всегда генерирует один и тот же PDF-файл.

Вы действительно не проверили бы файл PDF. PDF - сложный формат, основанный на PostScript и некоторой темной магии.

Что вы можете сделать, это создать «образец» PDF один раз, а затем написать единичный тест, который использует те же входные данные для создания PDF-файла, а затем сравнить это с вашим образцом.

Это будет выглядеть примерно так (только некоторые примеры кода):

$myPdf = $pdfGenerator->generatePdf(); 
$samplePdf = file_get_contents('/some/example/file.pdf'); 

// with PHPunit 
$this->assertEquals(0, strcmp($myPdf, $samplePdf)); 

Это немного грязный, но это делает работу ... если что-то в вашем PDF или изменения реализации JSON, тест блок сделает вас осознавая это.

Важно, однако, чтобы ваш PDF-генератор не вставлял никаких «динамических» данных, таких как отметки даты. В этом случае файлы PDF, очевидно, никогда не будут идентичны.

Смежные вопросы