簡體   English   中英

如何對以Lambda表達式為參數的存儲庫方法進行單元測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM