使用ApprovalTests.Net指定测试输出路径,支持多文件

Specifying the test output path using ApprovalTests.Net to support multiple files

我正在编写一个从 HTML 标记生成 PDF 文件的应用程序(使用第三方库来这样做)。

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

我的问题是,虽然 ApprovalTests.Net 本机支持 PDF 相等性检查,但每次生成 PDF 文件时,PDF 生成工具都会生成略有不同的内部标记。 (字体文件名经过压缩和随机化,文件 ID 发生变化等)。

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

这都是相当微不足道的。

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

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

任何有使用批准测试框架经验的人都可以提供任何见解吗?

或者,是否有任何其他框架可以让我批准测试图像集?

谢谢。

创建 ApprovalBinaryWriter 的新派生 class 并覆盖 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));