3 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個贊
Moq 不支持 with Expression 函數(shù),所以這是最好的解決方案。使用這個 nuget 包Moq.Expression
// import namespace
using MoqExpression;
// you should do like this it will work
mockrepo.Setup(x => x.SearchFor(MoqHelper.IsExpression<Employee>(s => s.Name.Equals("Test")))).Returns(employeeList.AsQueryable());
更多文檔:點(diǎn)擊這里

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
您有幾種選擇:
使用內(nèi)存中的 ORM(如果一個用于 Active Record)或內(nèi)存中的對象集合。
將 Active Record 類公開為 Active Record 接口、模擬接口方法并將模擬接口提供給使用它的類。
通常表達(dá)式永遠(yuǎn)不會被模擬,因?yàn)樗鼈兪菢I(yè)務(wù)邏輯的一部分。模擬的主要建議是基于應(yīng)用程序架構(gòu)。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊
如果可能的話,我建議稍微重新設(shè)計一下:您應(yīng)該刪除 Get 上的謂詞參數(shù),因?yàn)楫?dāng)您返回 IQueryable 時,可以稍后定義諸如“僅獲取活動記錄”之類的條件。
代替
employeess.Get(x => x.EmployeeId == employeeId && x.Active == 1).FirstOrDefault();
你的代碼會變成
employees.Get().FirstOrDefault(x => x.EmployeeID == employeeId && Active == 1);
現(xiàn)在模擬 Get() 變得更加容易,因?yàn)槟恍枰祷?employeeList.AsQuerable()。
- 3 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報