2008-09-26 63 views
0

我正在寫一個repository。通過DAO獲取對象。創建和更新對象是通過一個Request對象完成的,該對象被提供給RequestHandler對象(la Command pattern)。我沒有編寫DAO,Request或RequestHandler,所以我不能修改它們。我應該嘲笑哪個對象?

我正在嘗試編寫此存儲庫的測試。我嘲笑了DAO和RequestHandler。我的目標是讓模擬的RequestHandler簡單地將新的或更新的對象添加到模擬的DAO中。這會造成我與數據庫交談的錯覺。這樣,我不必爲所有調用此存儲庫的類嘲笑存儲庫。

問題是Request對象是這個字符串blob和各種字母數字代碼的混合物。我很確定XML也涉及到。這有點亂。另一位開發人員正在編寫代碼以基於存儲的對象創建Request對象。而且由於RequestHandler接受請求而不是我要存儲的對象,它不能更新模擬的DAO。

所以問題是:我是否也嘲笑了請求,還是應該等到另一個有點慢的人在我編寫測試之前完成他的代碼?或者在測試調用存儲庫的類時使用它並嘲笑整個存儲庫?

順便說一句,我說「模擬」不是NMock意義上的,而是像使用內存集合來僞造數據庫。

回答

2

要測試存儲庫,我建議你對所有的低層對象使用測試雙打。

要測試依賴於存儲庫的類,我建議您使用測試雙打來存儲庫。

在這兩種情況下,我的意思是由一些嘲諷庫創建測試雙打(假如它適用於測試,那麼需要將某些東西返回給測試對象,如果真的需要嘲笑)。

如果您正在使用內存集合創建DAO的實現,以在功能上替換演示或測試系統中的數據庫,這與單元測試上層不同。我做了類似的事情,以便我可以爲人們提供原型,專注於業務對象而不是物理模型。這不是爲了單元測試。

0

您可能未創建Web應用程序,但可以查看使用Repository的NerdDinner應用程序。這是一個免費的PDF文件,解釋瞭如何使用ASP.NET MVC創建應用程序,可以在這裏找到:Professional ASP.NET MVC 2.0