精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Moq中帶ref參數方法的Callback

開發 后端
Moq是.NET平臺上流行的mock類庫。mock對象的方法的參數帶ref關鍵字時感覺壓力很大。本文主要分析Moq在進行單元測試時遇到的問題。

隨著.NET世界中mock技術的普及,Moq也流行了起來,其部分原因是,它是專為那些剛接觸mock技術或需要編寫自定義mock對象的開發人員量身定做的類庫。Moq舍棄了經典的Record/Reply范式,取而代之的是讓測試者使用Lambda表達式設定行為的預期結果,并使用Castle DynamicProxy來截斷mock對象的調用。

最近在使用的時候,當mock對象的方法的參數帶ref關鍵字時感覺壓力很大。

首先來重現一下案發現場,首先定義我們需要mock的接口:

  1. public interface ITestInterface  
  2. {  
  3. string TestMethodWithRef(ref string refStr, string str);  

接下來我們mock我們定義的接口的方法TestMethodWithRef,并指定方法被調用之后執行委托操作:

  1. [TestMethod]  
  2. public void Ref_Param_Test()  
  3. {  
  4. var mock = new Mock<ITestInterface>();  
  5. string refStr = "1";  
  6. string str = "2";  
  7. mock.Setup((m) => m.TestMethodWithRef(ref refStr, str)).Callback((string rs, string s) => Console.WriteLine(rs + s));  
  8. mock.Object.TestMethodWithRef(ref refStr, str);  
  9. mock.VerifyAll();  

上面的測試方法,看上去是沒什么問題,編譯也沒什么問題,但運行測試的話悲劇發生了,拋出異常

System.ArgumentException: Invalid callback. Setup on method with parameters (String&,String) cannot invoke callback with parameters (String,String) 

這異常就是說Callback委托執行的方法的參數與Setup方法的參數對應不起來,有人也許馬上就想說這樣改改不就行了:

  1. mock.Setup((m) => m.TestMethodWithRef(ref refStr, str))  
  2. .Callback((ref string rs, string s) => Console.WriteLine(rs + s)); 

可惜微軟老大很直接的告訴你lamada表達式里面的參數不能用ref和out:

Variables introduced within a lambda expression are not visible in the outer method 

這下子壓力真就大了,淡定,淡定,相信google!找了下還真不少信息,可惜感覺有用的就兩種解決方案。***種很直接,別用Moq偽造對象了,直接自己敲代碼偽造接口或者對象以及相關方法,但感覺這解決方案有點坑爹。第二種就是委托執行的操作里面別傳參數進去了:

  1. mock.Setup((m) => m.TestMethodWithRef(ref refStr, str)).Callback(() => Console.WriteLine(refStr + str)).Returns("").Verifiable(); 

怎么說第二種方案也還算比較滿意,至少能解決大部分問題了。

差不多這事也算完了,可惜很不小心又踩了一個坑,我們修改下我們單元測試方法:

  1. [TestMethod]  
  2. public void Ref_Param_Test()  
  3. {  
  4. var mock = new Mock<ITestInterface>();  
  5. string refStr = "1";  
  6. string str = "1";  
  7. mock.Setup((m) => m.TestMethodWithRef(ref refStr, str)).Callback(() => { refStr = "2"; str = "2"; }).Returns("").Verifiable();  
  8. mock.Object.TestMethodWithRef(ref refStr, str);  
  9. mock.VerifyAll();  
  10. Assert.AreEqual("2", str);  
  11. Assert.AreEqual("2", refStr);  

直接看看這測試的邏輯,我想大部分人應該都會覺得沒啥問題吧?

還是不放心,運行下吧,悲劇繼續發生了,測試失敗:Assert.AreEqual 失敗。應為: <2>,實際為: <1>  

變量refStr的值還是“1”,這下子還真有趣了!

【編輯推薦】

  1. c#中的數據庫訪問工廠
  2. C#選擇正確的集合進行編碼
  3. .NET中值得體驗的精妙設計
  4. ASP.NET控件10個最有用的屬性詳解
責任編輯:于鐵 來源: 博客園
相關推薦

2021-10-04 14:56:09

機器學習函數參數

2009-08-13 09:47:57

調用JSP EL表達式帶參數方法

2010-10-08 16:55:44

MySql存儲過程

2009-08-04 14:44:40

callback實現機ASP.NET2.0

2018-04-13 06:46:43

無服務器單元測試IT云

2022-09-27 11:01:08

Python裝飾器

2009-09-17 13:26:55

.NET方法簽名

2009-07-22 07:53:00

Scala無參數方法

2009-09-23 17:28:55

Hibernate C

2009-09-22 13:31:28

Hibernate C

2010-11-15 10:40:58

Oracle啟動參數

2009-07-09 00:25:00

Scala參數化

2025-04-22 08:16:37

refC#參數

2011-08-23 13:14:05

JDBC帶輸出參數的存儲過程

2017-02-17 10:07:02

AndroidMVP模式實例

2009-07-14 15:53:21

光纖參數測試

2017-01-22 16:35:02

iOSBlockCallback

2024-10-28 08:07:17

2023-10-07 08:21:16

開源軟件Moq

2023-03-17 08:00:34

OpenCVCvType錯誤
點贊
收藏

51CTO技術棧公眾號

亚洲日本成人| 国产成人精品亚洲线观看| 国产色婷婷亚洲99精品小说| 国产精品美女主播| 91视频综合网| 精品福利网址导航| 91久久精品一区二区三区| 亚洲美女自拍偷拍| 日本一级在线观看| 久久99国产精品免费网站| 久久男人资源视频| 日韩中文字幕有码| av毛片精品| 欧美日韩一区三区| 国产精品秘入口18禁麻豆免会员| 欧美三级电影一区二区三区| 99久久婷婷国产精品综合| 国产成人精品日本亚洲专区61 | 国产欧美中文在线| 92看片淫黄大片欧美看国产片| 男人天堂新网址| 无码精品黑人一区二区三区| 97人人精品| 日韩欧美激情在线| 超碰影院在线观看| а√在线中文在线新版| 综合分类小说区另类春色亚洲小说欧美| 国产伦精品一区二区三区高清版| 中文字幕第31页| 99精品视频网| 欧美国产日韩一区二区| 国产麻豆视频在线观看| 欧美一站二站| 亚洲欧美日韩中文视频| 国产在线不卡av| 黄网av在线| 国产精品电影院| 日本视频一区二区不卡| 中文字幕黄色片| 狠狠入ady亚洲精品| 日韩欧美在线1卡| 蜜桃免费在线视频| 成人免费直播| 欧美日韩亚洲高清| 欧美精品久久久久久久自慰| 18+视频在线观看| 国产精品第13页| 亚洲色图自拍| 丁香婷婷在线观看| 国产日韩欧美精品一区| 美女一区视频| 男人天堂亚洲二区| 国产婷婷精品av在线| 欧美久久久久久一卡四| 免费在线一级视频| 久久久一区二区| 欧美日韩一区在线观看视频| 欧美精品a∨在线观看不卡 | 久久黄色影院| 日本免费久久高清视频| 亚洲 欧美 中文字幕| 日日欢夜夜爽一区| 国产精品扒开腿做| 在线观看国产黄| 精品一区二区三区免费视频| 亚洲www在线| 国产激情无套内精对白视频| 国产98色在线|日韩| 国产欧美日韩伦理| 一区二区三区日韩欧美| 91久久久在线| 精品毛片在线观看| 国产成都精品91一区二区三| 国产精品大全| 五月天婷婷社区| 2017欧美狠狠色| 深夜福利成人| 岛国成人毛片| 亚洲h精品动漫在线观看| 大j8黑人w巨大888a片| 中老年在线免费视频| 在线视频国内一区二区| 99re6在线观看| 66精品视频在线观看| 亚洲精品自在久久| 青青操在线播放| 欧美日韩国产探花| 日本一区二区三区四区视频| 一区不卡在线观看| 成人免费电影视频| 欧美中日韩一区二区三区| 91在线网址| 亚洲一区在线视频观看| 久草青青在线观看| 精品国产一区二区三区性色av| 欧美精品一区二区久久婷婷| 手机免费看av| 欧美69wwwcom| 日产日韩在线亚洲欧美| 91麻豆国产在线| 99久久伊人久久99| 异国色恋浪漫潭| 麻豆视频在线看| 7777精品伊人久久久大香线蕉超级流畅 | 在线综合视频播放| 天天插天天射天天干| 99国产精品免费视频观看| 97免费视频在线| 在线视频免费观看一区| 成人av网站免费观看| 伊人天天久久大香线蕉av色| 女人让男人操自己视频在线观看 | 国产精品传媒精东影业在线| 97视频在线观看亚洲| 国产免费一区二区三区免费视频| 久久综合九色综合欧美就去吻| 黄黄视频在线观看| 成人精品国产亚洲| 亚洲国产中文字幕在线观看| 国产精品视频一区二区三| 鲁大师影院一区二区三区| 国产精品日韩二区| h片在线播放| 欧美午夜片在线观看| 中文字幕在线播放视频| 欧美日本一区| 91色p视频在线| 成年人视频网站在线| 欧美性猛交xxxx偷拍洗澡| 巨乳女教师的诱惑| 超碰一区二区| 精品国产一区二区三区四区四| а天堂中文在线资源| 久久婷婷影院| 久久久久se| 密臀av在线播放| 精品国产露脸精彩对白| 中文字幕在线有码| 国内精品不卡在线| 亚洲精品高清国产一线久久| 亚洲人成午夜免电影费观看| 亚洲精品乱码久久久久久金桔影视 | 欧美国产日韩在线视频| 日韩理论电影院| 久久久国产影院| 日批视频免费观看| 久久久三级国产网站| 久久久免费视频网站| 青草久久视频| 秋霞午夜一区二区| 亚洲色图狠狠干| 欧美小视频在线| 国产精品jizz| 丝袜诱惑亚洲看片| 午夜精品电影在线观看| 成人性片免费| 久久精品2019中文字幕| 国产精品欧美综合亚洲| 综合久久一区二区三区| 51自拍视频在线观看| 欧美福利在线| 韩国成人av| 日韩电影免费观看高清完整版| 亚洲天堂av图片| 中文字幕码精品视频网站| 中文字幕永久在线不卡| 久久人人爽人人片| 国产精品多人| 欧美极品一区二区| 成人深夜福利| 欧美放荡办公室videos4k| 黄色av小说在线观看| 天天射综合影视| 中文字幕 自拍| 精品午夜一区二区三区在线观看 | 无码少妇一区二区| 久久精品国产亚洲高清剧情介绍| 免费国产成人看片在线| 都市激情亚洲欧美| 亚洲91精品在线| 成年人在线观看视频| 日韩美女天天操| 亚洲精品午夜国产va久久成人| 国产亚洲综合性久久久影院| 天堂在线中文在线| 亚洲小说欧美另类婷婷| 欧美污视频久久久| 日韩电影免费观看高清完整版在线观看| 欧美成人免费播放| 飘雪影院手机免费高清版在线观看| 91国在线观看| 劲爆欧美第一页| 久久久久久毛片| 91网址在线观看精品| 国产日产高清欧美一区二区三区| 亚洲啪啪av| 国产图片一区| 成人夜晚看av| 92国产精品| 欧美精品成人在线| 992tv免费直播在线观看| 亚洲精品一区二区三区香蕉| 中文字幕av资源| 黄色一区二区在线观看| 亚洲欧美另类日本| 26uuu国产一区二区三区| 亚洲第一天堂久久| 欧美一级二区| 免费看欧美一级片| 国产精品福利在线观看播放| 久久精品人人做人人爽电影| 久久av网站| 国产精品久久一区主播| 国产直播在线| 欧美精品亚州精品| 3p视频在线观看| 亚洲男人第一网站| 内射无码专区久久亚洲| 欧美一区二区性放荡片| 久草视频在线免费| 午夜精品久久久久久久 | 岛国视频午夜一区免费在线观看| 免费精品在线视频| 国产精品天美传媒沈樵| 中文幕无线码中文字蜜桃| 不卡电影一区二区三区| 四虎1515hh.com| 麻豆国产欧美日韩综合精品二区| 能在线观看的av| 亚洲三级网站| 男人添女荫道口图片| 欧美在线观看天堂一区二区三区| 亚洲精品一区二区三区樱花 | 在线观看91久久久久久| 亚洲欧美自偷自拍| 亚洲精品按摩视频| 人妻精品无码一区二区| 日韩午夜电影在线观看| 99久久亚洲精品日本无码| 欧美日韩一级大片网址| 午夜精品免费观看| 91高清在线观看| 手机av免费观看| 色婷婷精品大在线视频| 欧美a视频在线观看| 欧美性高潮在线| 国产精品免费av一区二区| 无吗不卡中文字幕| 日韩精品成人一区| 精品国产福利在线| 六月丁香激情综合| 日韩欧美精品网址| 麻豆精品久久久久久久99蜜桃| 欧美日韩在线免费| 黄色片视频免费| 欧美天堂一区二区三区| 中文字幕人成人乱码亚洲电影| 欧美三区在线观看| 91精品国产乱码久久久| 制服丝袜亚洲网站| 精品久久久久成人码免费动漫| 日韩一区二区三区视频| 亚洲第一页在线观看| 亚洲国产精品va在线| 婷婷色在线视频| 亚洲经典中文字幕| 国产www.大片在线| www.午夜精品| 日本三级在线观看网站| 午夜精品蜜臀一区二区三区免费| 夜鲁夜鲁夜鲁视频在线播放| 国产精品露脸自拍| 国产精品日韩精品在线播放 | 在线日本视频| 久久久成人的性感天堂| 啦啦啦中文在线观看日本| 欧美性受xxxx白人性爽| 99久久婷婷国产综合精品首页| 91老司机在线| 乱亲女h秽乱长久久久| 欧美性天天影院| 亚洲综合五月| 黄www在线观看| 久久99国产乱子伦精品免费| 日本50路肥熟bbw| 久久精品人人做人人综合 | 麻豆影院在线| 亚洲 日韩 国产第一| 日韩精品免费观看视频| 亚洲最大福利视频网| 天天躁日日躁狠狠躁欧美巨大小说| 亚洲成色www久久网站| 欧美日韩四区| 国产福利视频在线播放| 国产在线播精品第三| 久久久久久亚洲中文字幕无码| 亚洲女子a中天字幕| 亚洲影院在线播放| 日韩欧美一区二区三区在线| 裸体xxxx视频在线| 色综合色综合久久综合频道88| 桃花岛tv亚洲品质| y111111国产精品久久婷婷| 欧美一二区在线观看| 男人插女人视频在线观看| 久久aⅴ国产欧美74aaa| 中文字幕丰满孑伦无码专区| 亚洲三级电影网站| 免费又黄又爽又猛大片午夜| 精品久久久久久久久久久久久久久久久| 国产女人在线观看| 亚州av一区二区| 亚洲不卡在线| 一区二区冒白浆视频| 免费视频久久| 中文视频在线观看| 亚洲欧洲综合另类| 天天天天天天天干| 日韩精品一二三四区| 日日夜夜天天综合入口| 国产一区二中文字幕在线看| 欧美男男gaytwinkfreevideos| 精品人妻人人做人人爽| 国产综合色在线视频区| 手机av在线不卡| 一本久久a久久免费精品不卡| 黄色一级a毛片| 欧美成在线视频| 小说区图片区亚洲| 亚洲成人av动漫| 天堂va蜜桃一区二区三区| 37p粉嫩大胆色噜噜噜| 性做久久久久久| 超碰在线人人干| 欧美成人免费小视频| 中文字幕成人| 性欧美18一19内谢| 久久国产欧美日韩精品| 一级黄色毛毛片| 欧美专区日韩专区| 春暖花开成人亚洲区| 国产精品久久久久99| 精品国产aⅴ| 国产一级做a爰片久久| 国产欧美精品一区aⅴ影院 | 亚洲乱码国产乱码精品精| a国产在线视频| 国产亚洲情侣一区二区无| 亚洲精选在线| 少妇饥渴放荡91麻豆| 精品日韩视频在线观看| 青青青草原在线| 国产精品成人久久久久| 精品国产中文字幕第一页| 91热这里只有精品| 国产精品天美传媒| 国产欧美一区二区三区视频在线观看 | 丰满少妇xbxb毛片日本| 亚洲国产日韩精品| 午夜激情在线视频| 日本久久久a级免费| 日韩一区电影| 女教师高潮黄又色视频| 亚洲国产乱码最新视频 | 欧美大片在线播放| 久久免费视频一区| 中文字幕乱码无码人妻系列蜜桃| 久久久精品在线| 波多野结衣一区二区三区免费视频| 少妇av一区二区三区无码| 久久日韩精品一区二区五区| 天天天天天天天干| 欧美另类极品videosbest最新版本 | 亚洲福利在线视频| 成人性生活视频| 一本一本a久久| 懂色一区二区三区免费观看| 天天干天天干天天干天天| 亚洲天堂日韩电影| 成人免费91| 乱妇乱女熟妇熟女网站| 中文字幕成人网| 亚洲第一天堂影院| 国产精品成人一区| 欧美 日韩 国产 一区| 国产网站无遮挡| 欧美午夜精品一区二区蜜桃| 在线电影福利片| 欧洲精品一区色| 国产精品一区二区三区网站| 国产精品999在线观看| 丝袜情趣国产精品| 欧美日日夜夜| 992tv人人草| 色综合久久久久综合| 91小视频xxxx网站在线| 欧洲亚洲一区二区| 国产福利一区二区三区| 国产精品乱码一区二区视频| 欧美福利在线观看|