UnitTest
1. 什麼是 NSubstitute?
2. 如何處理 Expression & IQueryable?
3. NSubstitute 學習資源 & 參考資料
OS:Windows 10
IDE:Visual Studio 2019
UnitTest:xUnit
舉例來說,我們寫一個稍微複雜的方法 A,通常不可避免的會需要呼叫其他外部方法,此時若要對這個方法 A 撰寫單元測試時,就需要寫個假的實體(Mock、stub)來取代被呼叫的外部方法,以隔離外部方法,避免因外部方法而造成測試執行失敗。
但呼叫的外部方法一多,我們寫假的實體(Mock、stub)就會寫到天荒地老,好不快樂,此時我們就可以使用 NSubstitute 來幫我們建立假的實體(Mock、stub),將無數行程式碼濃縮成短短幾行!
資料庫有個 User 資料表,裡面存著 User Id 跟 User Name,今天接到兩個需求
要實作功能,我們預期會有
取得所有 User 時不包含搜尋條件,filter = null,直接將 userData 轉 IQueryable 回傳,所以呼叫外部方法時會回傳全部 userData 的資料
將外部方法 Returns 回傳的 userData 集合使用 LinQ Where,依據 GetUser 中所設定 filter 條件來篩選,以此方式隔離外部方法,因為外部方法是否正常運作不該影響當前測試方法
GitHub:NSubstituteWithExpression
GitHub:NSubstituteWithExpressionTests