2011-01-08 169 views
1

我想測試一個對象「SqlGymSessionRepository」,它在初始化時需要一個int。如果沒有提供參數,我希望它引發錯誤。我無法弄清楚這應該如何工作。我有這樣的事情:測試模擬對象構造函數

[TestMethod] 
[ExpectedException(typeof(ArgumentNullException))] 
public void Throw_Exception_If_Not_Session_Id() 
{ 
    var mockRepos = new Mock<SqlGymSessionRepository>(); 
} 

我不確定構造函數應該在哪裏測試?

回答

4

你不想嘲笑你正在測試的類(實現)。你想模擬一個類的依賴關係。如果你正在測試SqlGymSessionRepository,那麼你不想嘲笑它,你想要它的實現。這個嘲諷適用於任何其他類別,其中SqlGymSessionRepository取決於你,然後你會提供給你的測試。

直接調用構造函數。

1

如果你要測試的構造函數,調用它:

​​

更新%的評論:

就表示它需要一個可空INT。然後,編譯器將確保它將始終使用null或整數值進行調用。如果null是一個無效的初始化有效的,你的代碼應該拋出一個異常,你可以測試它。您不需要測試該方法在沒有參數的情況下被調用。 C#是靜態類型的,因此除非爲所有必需的參數提供值,否則代碼將不會編譯。

+0

的問題是,由於對象需要一個int,我無法用一個空從而測試錯誤時拋出創建它,因爲有一個編譯時錯誤? – hoakey 2011-01-08 13:18:06

0
​​