2008-11-24 89 views
3

我的理解是你必須編寫隔離功能的單元測試。因此,考慮到有這種方法的倉儲類:單元測試假存儲庫,如何在不首先添加實體的情況下測試GetById方法?

Entity GetById(Guid id) 

實現(使用字典存儲),你會怎麼寫不首先測試添加實體?可以使用一套已知的guid進行測試嗎?然後在假的版本庫構造函數中,我可以用字典中的幾個實體來填充字典,其中的guid遵循一個模式,以便我可以使用我知道的guid測試GetById()方法來返回一個實體。

感謝您的閱讀!

PS。這是我第一次寫單元測試。

回答

2

是的,使用的是假執行的對象/接口與可以從假實例中查詢的固定項目列表是一種有效的做法。

顯然,如果不先添加條目,只能測試在存儲庫中找不到Guid時返回的內容。

在C#允許的情況下,也可以讓虛擬實現的存儲庫有一個方法將項目添加到存儲庫。

4

是的,你可以在你的測試中使用已知的測試ID - 這是我會做的。儘管我已經成爲Rhino Mocks的粉絲,可以讓你更直接地進行測試,瞭解你對模擬對象的期望。

例如只是你的電話到倉庫之前,你可以這樣做:

Expect.Call(repository.GetById("someObject")).Return(new RepositoryThing()); 

它吸引我反正:)

+1

你可能會做新的RepositoryThing {Id = 1,Name =「TestOne,...} – tvanfosson 2008-11-24 12:57:15

相關問題