第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 C# 中模擬 linq 表達(dá)式

如何在 C# 中模擬 linq 表達(dá)式

C#
收到一只叮咚 2022-11-21 21:46:03
我正在使用 moq 編寫 linq 表達(dá)式的單元測試我的 linq 表達(dá)式根據(jù) employeeid 和活動記錄等條件獲取員工列表。這是我的 linq 表達(dá)式employeess.Get(x => x.EmployeeId == employeeId && x.Active == 1).FirstOrDefault();我已經(jīng)設(shè)置了以下通用表達(dá)式來模擬員工列表。mockrepo.Setup(x =>   x.Get(    It.IsAny<Expression<Func<Employee, bool>>>(),     It.IsAny<Func<IQueryable<Employee>,     IOrderedQueryable<Employee>>>(),     It.IsAny<string>()    )).Returns(employeeList.AsQueryable());我想編寫單元測試以根據(jù)條件獲取員工列表。如何用條件模擬linq表達(dá)式
查看完整描述

3 回答

?
繁星點(diǎn)點(diǎn)滴滴

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)擊這里


查看完整回答
反對 回復(fù) 2022-11-21
?
12345678_0001

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊

您有幾種選擇:

  1. 使用內(nèi)存中的 ORM(如果一個用于 Active Record)或內(nèi)存中的對象集合。

  2. 將 Active Record 類公開為 Active Record 接口、模擬接口方法并將模擬接口提供給使用它的類。

通常表達(dá)式永遠(yuǎn)不會被模擬,因?yàn)樗鼈兪菢I(yè)務(wù)邏輯的一部分。模擬的主要建議是基于應(yīng)用程序架構(gòu)。


查看完整回答
反對 回復(fù) 2022-11-21
?
幕布斯7119047

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()。


查看完整回答
反對 回復(fù) 2022-11-21
  • 3 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號