最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何通過 Moq 從 EF 模擬 Find()

如何通過 Moq 從 EF 模擬 Find()

C#
慕田峪9158850 2023-09-24 17:18:41
我的可測(cè)試函數(shù)使用EF.Find()so,因?yàn)槲野l(fā)現(xiàn)我需要實(shí)現(xiàn) find 的模擬。似乎被編譯的唯一代碼是c#testsContextMock.Setup(m => m.Find(It.IsAny<Type>(), It.IsAny<object[]>())) .Returns<object[]>(hashes => testsMock.Object.FirstOrDefault(u => u.hash == (string)hashes[0]))其中testsContextMock是Mock<DbContext>對(duì)象,并且testsMock是Mock<DbSet<MyEntity>>。但是完成此代碼后我收到此錯(cuò)誤System.ArgumentException : Invalid callback.  Setup on method with 2 parameter(s) cannot invoke callback  with different number of parameters (1).正如我假設(shè)發(fā)生這種情況的原因是調(diào)用的可測(cè)試方法簽名Find()是DbSet<MyEntity>.Find(params object[] keyValues)和模擬方法的簽名是DbContext.Find(Type entityType, params object[] keyValues)。如果我嘗試模擬其他重載,它會(huì)因編譯器錯(cuò)誤而失敗 Argument 1: cannot convert from 'object[]' to 'System.Type'
查看完整描述

1 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

讓我們仔細(xì)看看被調(diào)用函數(shù)的簽名:

  1. DbContext.Find(Type entityType, params object[] keyValues)我們?cè)谀M中得到了什么

  2. DbSet<MyEntity>.Find(params object[] keyValues)我們從方法中得到什么

這很容易看到,但不知何故我錯(cuò)過了第一個(gè)參考上下文和第二個(gè)集合。所以在我的調(diào)用中而不是從上下文中查找m

testsContextMock.Setup(m => m.Find(It.IsAny<Type>(), It.IsAny<object[]>()))

我只需要從正確的DbSet中找到

testsContextMock.Setup(m => m.MyEntities.Find(It.IsAny<object[]>()))


查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 1 回答
  • 0 關(guān)注
  • 195 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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