2011-08-17 90 views
4

我有這樣的方法進行單元測試:如何單元測試庫方法

public virtual TEntity Get(int id) 
     { 
      return _db.Set<TEntity>().Find(id); 
     } 

可能有人請告訴我如何單元測試嗎?

我想我需要測試的是,查找調用正確的ID?

首先,我試圖用Moq來嘲笑上下文_db。設置不是虛擬的,但不能使用Verify

有人可以請建議一個替代方法來測試這個嗎?

回答

9

存儲庫實現通常充滿了對ORM API的調用。 單元沒有什麼東西在這裏測試。相反,您應該寫一個集成測試。在像SQLite這樣的內存數據庫中使用。閱讀thisthis。這樣你會覆蓋你的映射,標準,HQL等。我知道你使用的是EF,但我認爲這個原則和NHibernate一樣。

關於嘲笑_db。有一個非常好的指導原則:Don't mock types you don't own

+0

非常感謝您的有用鏈接! – AnonyMouse

0

我在github上放了一個通用的存儲庫實現,它允許簡單的測試。您可以點擊此處查看:

https://github.com/rcravens/GenericRepository

的倉庫實現自身測試也有假的(在內存中)倉庫實現,你可以在注入測試更高水平的代碼。

Bob