2

我正在编写一个从 HTML 标记生成 PDF 文件的应用程序(使用第三方库来执行此操作)。

我希望能够批准测试这些 PDF 文件的输出,因此我一直在查看ApprovalTests.Net库。

我的问题是虽然ApprovalTests.Net原生支持 PDF 相等检查,但 PDF 生成工具会在每次生成 PDF 文件时生成细微不同的内部标记。(字体文件名被压缩和随机化,文件 id 的变化等)。

似乎实现良好批准测试的最佳方法是将 PDF 文档扁平化为一系列图像,并使用二进制比较/加载图像差异工具来批准测试文档。

这一切都是微不足道的。

处理多页 pdf 文档时出现我的问题。每个页面都会生成一个新图像,因此我的测试需要遍历每个页面并检查批准的文件。

我似乎找不到任何文件来指定批准的文件名。

任何有使用 Approval Tests 框架经验的人都可以提供任何见解吗?

或者任何其他允许我批准测试图像集合的框架?

谢谢。

4

1 回答 1

3

创建一个新的 ApprovalBinaryWriter 派生类并覆盖 GetApprovalFilename 和 GetReceivedFilename 并将索引注入构造函数。

public class CustomBinaryWriter : ApprovalBinaryWriter
{
    private readonly int _index;

    public CustomBinaryWriter(byte[] data, string extensionWithoutDot, int index)
        : base(data, extensionWithoutDot)
    {
        _index = index;
    }

    public override string GetApprovalFilename(string basename)
    {
        return string.Format("{0}_{1}{2}{3}", basename, _index, WriterUtils.Approved, ExtensionWithDot);
    }

    public override string GetReceivedFilename(string basename)
    {
        return string.Format("{0}_{1}{2}{3}", basename, _index, WriterUtils.Received, ExtensionWithDot);
    }
}

然后你可以用

Approvals.Verify(new CustomBinaryWriter(doc, "png", 1));
于 2016-03-02T14:56:22.137 回答