我有一個讀取pop3電子郵件服務器的類。我想爲包含類編寫一些單元測試,所以我需要模擬POP3服務器類。我正在使用OpenPOP.Net。所以我有這樣一個構造函數:關於模擬框架C#和單元測試的問題
EmailHost(string email, string password, string pop3Address, int port)
... etc....
再後來我有一個連接類:
private void Connect()
{
_pop3 = new Pop3Client();
etc...
所以參考POP客戶端埋在類的膽量。爲了能夠嘲笑它,我需要做一些時髦的東西,因爲作爲製作EmailHost通用的Pop3Client,或添加一些功能,用默認做上述行:
public EmailHost<PopClass>(...)
或
public EmailHost(... params, Func popGenerate =() => new Pop3Client())
所以看來我必須妥協一下我的構造函數才能使它與模擬一起工作。 (顯然我會定義一個IPop3Client等)。
有關如何正確執行此操作的任何想法?
編輯:
JOK提供了一個有趣的答案,問題是,它沒有的我在做什麼結構內吻合。在這種特殊情況下,我需要處理Pop客戶端中的多個電子郵件地址,並動態添加。因此,當您添加每個電子郵件地址時,您需要創建一個新的Pop3Client。另外,我想隱藏POP3本身的實現,以便用戶不需要儘可能多地瞭解它。
還有其他想法嗎?
感謝您輸入btw。
您是否在項目中使用Spring? – 2011-06-08 19:03:30