2

HTMLマークアップからPDFファイルを生成するアプリケーションを作成しています(サードパーティのライブラリを使用してそうしています)。

これらの PDF ファイルの出力を承認テストできるようにしたいので、そのためにApprovalTests.Netライブラリを調べてきました。

私の問題はApprovalTests.Net、PDF の等価性チェックをネイティブでサポートしている一方で、PDF ファイルが生成されるたびに、PDF 生成ツールが微妙に異なる内部マークアップを生成することです。(フォント ファイル名は圧縮およびランダム化され、ファイル ID が変更されます)。

適切な承認テストを達成するための最良の方法は、PDF ドキュメントを一連の画像にフラット化し、バイナリ比較/画像差分ツールを使用してドキュメントの承認テストを行うことです。

これはすべてかなり些細なことです。

複数ページの PDF ドキュメントを扱うときに問題が発生します。各ページは新しい画像を生成するため、テストは各ページをループして、承認されたファイルと照合する必要があります。

承認されたファイル名を指定するドキュメントが見つからないようです。

承認テストのフレームワークを使用した経験のある人は、何か洞察を提供できますか?

あるいは、画像のコレクションの承認テストを可能にする他のフレームワークはありますか?

ありがとう。

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 に答える