2016-03-02 22 views
1

我正在編寫一個應用程序,它使用HTML標記(使用第三方庫來生成)生成PDF文件。使用ApprovalTests.Net指定測試輸出路徑以支持多個文件

我希望能夠批准測試這些PDF文件的輸出,所以我一直在尋找ApprovalTests.Net庫。

我的問題是,雖然ApprovalTests.Net原生支持PDF相等性檢查,但PDF生成工具會在每次生成PDF文件時生成細微差別的內部標記。 (字體文件名稱被壓縮和隨機化,文件ID的變化等)。

看起來,實現良好批准測試的最好方法是將PDF文檔拼合成一系列圖像,並使用二進制比較/加載圖像差異工具來批准測試文檔。

這是相當平凡的。

我在處理多頁pdf文檔時出現問題。每個頁面都會生成一個新的圖像,因此我的測試需要遍歷每個頁面並檢查批准的文件。

我似乎無法找到任何文件來指定批准的文件名。

任何具有使用批准測試框架經驗的人都可以提供任何見解嗎?

或者任何其他框架,這將允許我批准測試一組圖像?

謝謝。

回答

2

創建一個新的派生類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)); 
調用此