(单元)测试 pdf 生成



我们实现了magento模块 https://github.com/firegento/firegento-pdf/,我计划为该模块编写测试。

问题是:扩展程序生成 pdf。

是否有任何框架或任何可以测试 pdf 的内容?如果我能检查 pdf 中的文本,那就完全没问题了。我不想检查正确的位置。

安迪的想法?

这看起来很有希望,但感觉过大。 http://webcheatsheet.com/php/reading_clean_text_from_pdf.php

我将PdfBox用于类似的模块,这是一个基于Java的命令行实用程序,可以从PDF中提取文本并选择性地将其转换为HTML:http://pdfbox.apache.org/commandline/#extractText

为了在 PHPUnit 测试中使用它,我为相关的 PdfBox 方法编写了一个 PHP 接口: https://github.com/schmengler/PdfBox

use SGHPdfBox;
//$pdf = GENERATED_PDF;
$converter = new PdfBox;
$converter->setPathToPdfBox('/usr/bin/pdfbox-app-1.7.0.jar');
$text = $converter->textFromPdfStream($pdf);

延伸阅读:使用 PHPUnit 和 PDFBox 的单元测试生成的 PDF

也许您可以使用Inkscape将其转换为SVG并在某些SVG节点上进行断言。如果您只想检查文本或一些简单的格式,则可以这样做。

$ inkscape -f invoice.pdf --export-plain-svg=thepdf.svg

不过,对于正确的位置,您需要有点模糊。

尽管如此,PDF源代码可以足够简单,可以用简单的strpos()进行检查。

你必须屈服于测试"我们向Magento发送了正确的命令"。测试输出的 PDF 会导致脆弱性。

模拟 PDF 编写库,并测试您的代码是否正确调用了该库。这具有速度的额外好处,但需要更多的纪律。如果 PDF 输出未通过手动检查,您必须首先修复该测试,以保持模拟的真实性。

最新更新