2008-09-30 24 views

回答

3

IMO;數據集是邪惡的。他們是,而且應該只能用作離線數據庫。沒有更多,IMO。但是,您在數據訪問層(DAL)中執行的操作不應該真正影響您的業務層(BL)。我只是在它們之間使用對象(使用接口)(IList),然後使用一個接口來定義你的DAL(IRepository),你可以嘲笑那個接口來返回你的BL中需要的單元測試。單元測試數據集是另一個野獸,從來沒有嘗試過,我希望從來沒有...也許內存中的數據庫是你最好的選擇...

哦,而且嘲笑我用RhinoMock取得了一些成功。我也鼓勵你看看IoC(http://www.castleproject.org/)。

+0

我同意。我目前有一個使用NHibernate,Castle Windsor和RhinoMock的應用程序,我非常高興。 我使用Repository模式,併爲我的單元測試幾乎完全從DAL解耦。 永遠不會想再次回到數據集 – Tigraine 2008-10-28 18:50:20

-2

如果你有實體對象,你可以用嘲笑的單元測試你的中間層。

RWendi

0

你試過Spring.net?它會使你的代碼更乾淨,更少耦合。它還提供useful classes來完成您的集成測試。

0

這取決於你想考什麼:

  • 你想測試從數據庫中檢索數據?
  • 從數據集構建對象?
  • 插入或更新數據庫?
  • 等等...

這裏有一個建議:

訂單中包含其所有的孩子。這是一個整體,是一個整體。

var dataset = orderDatabase.GetOrderAndDetailsBy(id); 

存儲庫可以使用生成器來創建命令:

var order = orderBuilder.CreateOrderAndDetailsFrom(dataset); 

var order = repository.GetOrderBy(id); 

存儲庫從數據庫中獲取數據: 您從一個存儲庫的細節得到一個訂單

您將不得不創建一個存儲庫,如下所示:

var repository = new OrderRepository(orderDatabase, orderBuilder); 

現在,您可以使用虛假協作者創建存儲庫,具體取決於您要測試的內容。

1

您需要IOC(反轉控制)和模擬對象。

我建議你和James Kovacs一起看dnrTV episode 126

他證明了你正在尋找什麼。

相關問題