使用 ApprovalTests.Net 指定测试输出路径以支持多个文件
本文关键字:支持 文件 路径 输出 Net ApprovalTests 测试 使用 | 更新日期: 2023-09-27 18:36:59
我正在编写一个从HTML标记生成PDF文件的应用程序(使用第三方库来这样做)。
我希望能够批准测试这些 PDF 文件的输出,因此我一直在查看ApprovalTests.Net
库。
我的问题是,虽然ApprovalTests.Net
对 PDF 相等性检查有本机支持,但每次生成 PDF 文件时,PDF 生成工具都会生成略有不同的内部标记。(字体文件名被压缩和随机化,文件ID的更改等)。
似乎实现良好批准测试的最佳方法是将PDF文档展平为一系列图像,并使用二进制比较/加载图像差异工具来批准测试文档。
这一切都是相当微不足道的。
处理多页 pdf 文档时会出现我的问题。每个页面都会生成一个新图像,因此我的测试需要遍历每个页面并根据批准的文件进行检查。
我似乎找不到任何文档来指定批准的文件名。
任何有使用批准测试框架经验的人都可以提供任何见解吗?
或者,任何其他框架可以允许我批准测试图像集合吗?
谢谢。
创建一个新的派生类 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));