[英]How to Unit Test Repository Method That Takes Lambda Expression as A Parameter
我有一個存儲庫方法,如下所示:
public ICollection<TEntity> Find(Expression<Func<TEntity, bool>> where)
{
return Set.Where(where).ToList();
}
Set
是一個EntityFramework DbSet<TEntity>
對這種方法進行單元測試的最佳方法是什么? 我可以模擬DbSet<TEntity>
輕松返回一些虛擬數據,但是我不完全確定什么構成此方法的有效或有價值的測試。
例如,我可以測試返回類型是否正確,並且返回一個謂詞的空集合,而該謂詞顯然永遠不會滿足,但是我還應該運行其他哪些測試?
我是否應該編寫一個測試,該測試通過一個始終為true的表達式以測試真實條件,而另一個測試則通過一個始終為false的表達式以測試錯誤條件?
當你嘲笑的Set
沒有其它儀器更在其用途不同可以進行測試的方法。 然后,該方法僅包含一個模擬,僅此而已。 如果Set
只是一個模擬,則對Where
的調用也將根據您設置模擬的方式返回任何虛擬數據。 因此,您實際上是在測試是否以所需的方式對模擬進行了模擬,而不是對從模擬中檢索的數據執行正確操作的方法進行了測試。 由於處理這些數據很簡單(只需對其調用ToList
,因此無需在此處進行任何測試。
但是,您應該考慮到實際的Expression
是正確構建的,但是您不會在針對該方法的測試中而是針對調用代碼的測試中進行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.