2013-10-28 115 views
0

我想寫一個單元測試以下codesnippet:如何使用moq模擬System.Net.Mail.Attachment?

var attachment = new Attachment(path) 
{ 
    ContentId = Path.GetFileName(path) 
}; 

return attachment; 

不幸的是,附件構造函數拋出一個FileNotFoundException異常,如果我打電話與在單元測試代碼中的假路徑的構造函數。

我該如何嘲笑這段代碼,以驗證ContentId屬性是否設置正確?我不想測試框架代碼。

+0

是整個測試還是你將這個附件注入到另一個你想測試的模塊?因爲你真的不需要測試.Net框架代碼,只是你自己的。 – JMK

+0

我明白他想在測試代碼完成後測試Attachment.ContentId的狀態。 – galenus

+0

@galenus:的確 - 我想測試附件的狀態.ContentId – bitsmuggler

回答

1

您不必爲此使用Moq,只需使用Attachment類的this構造函數,提供您從測試項目的資源獲取的流以及匹配的ContentType。例如,您可以向資源添加一些文本文件並指定PlainText MIME類型。

+0

謝謝你的回答 - 是的,這是一條路。但遺憾的是,由於可測試性,我必須調用另一個ctor。你怎麼看? – bitsmuggler

+0

您可以自行包裝任何框架類型,根據需要調整它,附件類等等。你的包裝可以有所有的虛擬方法,或者它可以實現一個接口,這兩個解決方案都是可以嘲弄的,從而使測試變得更簡單。但是,你必須爲實現最終結果決定最實用的方式。所以我不認爲你現在的解決方案是不可接受的。 – galenus

+0

謝謝你的詳細評論 - 你的對。 – bitsmuggler