5

PDF で ApprovalTests を使用できますか? FileLauncher を使用してみましたが、同一の PDF がファイル (ビット) レベルでわずかに異なるようです。それとも私の使い方が悪かったのでしょうか?

[TestMethod]
[UseReporter(typeof(FileLauncherReporter))]
public void TestPdf()
{
    var createSomePdf = PdfCreate();

    ApprovalTests.Approvals.Verify(new FileInfo(createSomePdf.FileName));

}
4

3 に答える 3

7

Pdf はタイムスタンプ付きで作成されている可能性が最も高いです。PDF の作成に使用した方法によっては、作成時間をモックアウトできる場合があります。しかし、私はそれをこすり洗いしなければなりませんでした。

これが私がそれを行うために使用したコードです。

    public static void VerifyPdf(string coverFile)
    {
        ScrubPdf(coverFile);
        Approvals.Verify(new ExistingFileWriter(coverFile));
    }

    private static void ScrubPdf(string coverFile)
    {
        long location;
        using (var pdf = File.OpenRead(coverFile))
        {
            location = Find("/CreationDate (", pdf);

        }
        using (var pdf = File.OpenWrite(coverFile))
        {
            pdf.Seek(location, SeekOrigin.Begin);

            var original = "/CreationDate (D:20110426104115-07'00')";
            var desired = new System.Text.ASCIIEncoding().GetBytes(original);

            pdf.Write(desired, 0, desired.Length);
            pdf.Flush();
        }
    }
于 2012-10-10T15:57:19.763 に答える