Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 软件测试pdf是否正确创建_Php_Laravel_Testing - Fatal编程技术网

Php 软件测试pdf是否正确创建

Php 软件测试pdf是否正确创建,php,laravel,testing,Php,Laravel,Testing,我已经用laravel编写了一个REST应用程序。它接受Json负载,并使用该数据创建格式化的pdf 是否可以编写一个测试来检查pdf是否正确生成 编辑: 理想情况下,我希望知道pdf没有损坏,即将在pdf阅读器中打开 另外,以某种方式检查pdf的内容也很好。例如它是否包含客户名称 谢谢 是的,这是可能的,因为相同的JSON输入总是生成相同的PDF 你不会真的检查PDF文件。PDF是一种复杂的格式,基于PostScript和一些暗魔法 您可以做的是生成一次“示例”PDF,然后编写一个单元测试,使

我已经用laravel编写了一个REST应用程序。它接受Json负载,并使用该数据创建格式化的pdf

是否可以编写一个测试来检查pdf是否正确生成

编辑:

理想情况下,我希望知道pdf没有损坏,即将在pdf阅读器中打开

另外,以某种方式检查pdf的内容也很好。例如它是否包含客户名称


谢谢

是的,这是可能的,因为相同的JSON输入总是生成相同的PDF

你不会真的检查PDF文件。PDF是一种复杂的格式,基于PostScript和一些暗魔法

您可以做的是生成一次“示例”PDF,然后编写一个单元测试,使用相同的输入数据生成PDF文件,然后将其与您的示例进行比较

这看起来像(只是一些示例代码):

这有点脏,但它确实起到了作用……如果PDF或JSON实现中的某些内容发生了变化,单元测试会让您意识到这一点


但是,重要的是,您的PDF生成器不能插入任何“动态”数据,例如日期戳。在这种情况下,PDF文件显然不可能完全相同。

您能在代码中定义“正确”吗?您是否希望得到“是”或“否”的答复?bcoz,这是任何人都能提供给你的问题的最大限度验证PDF是相当复杂的,所以没有简单的方法。既然您自己生成文档,为什么您认为它将是无效的?一个简单的测试是检查文件大小,也许还有前几个字节(它应该以“%PDF”开头)。请看,这是另一个完全正确的问题,没有任何有效的理由就结束了。
$myPdf = $pdfGenerator->generatePdf();
$samplePdf = file_get_contents('/some/example/file.pdf');

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