成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

.NET使用Moq進行單元測試

瀏覽:397日期:2022-06-08 14:04:30

本篇體驗Moq的一些基本用法。首先通過NuGet安裝Moq。

模擬方法的返回值

    public class HelperClass    {public virtual Boolean IsEnabled(){    throw new Exception();}    }    [TestClass]    public class UnitTest1    {[TestMethod]public void TestMethod1(){    var mock = new Mock<HelperClass>();    mock.Setup(x => x.IsEnabled()).Returns(true);    Assert.AreEqual(mock.Object.IsEnabled(),true);}    }
  • Moq模擬的方法一般是virtual虛方法,接口方法
  • mock.Object是指HelperClass的實例

模擬方法后執行回調函數

   [TestClass]    public class UnitTest1    {[TestMethod]public void TestMethod1(){    string temp = "";    var mock = new Mock<HelperClass>();    mock.Setup(x => x.IsEnabled()).Returns(true).Callback(() => { temp = "success"; });    Assert.AreEqual(mock.Object.IsEnabled(),true);    if (temp == "success")    {//TODO    }}    }
  • 執行Return方法后,執行Callback回調方法,接收的參數類型是委托

模擬方法依次返回多個值

    [TestClass]    public class UnitTest1    {[TestMethod]public void TestMethod1(){    var mock = new Mock<HelperClass>();    mock.SetupSequence(x => x.IsEnabled()).Returns(true).Returns(false);        Assert.AreEqual(mock.Object.IsEnabled(),true);    Assert.AreEqual(mock.Object.IsEnabled(), false);}    }
  • SetupSequence方法可以為方法返回多個值

如果把以下2句:

Assert.AreEqual(mock.Object.IsEnabled(),true);
Assert.AreEqual(mock.Object.IsEnabled(), false);

顛倒一下順序,變成:

Assert.AreEqual(mock.Object.IsEnabled(), false);
Assert.AreEqual(mock.Object.IsEnabled(),true);

結果,測試不通過。因為SutupSequence返回方法返回值的時候是有順序的。

模擬第二次調用方法返回異常

    [TestClass]    public class UnitTest1    {[TestMethod]public void TestMethod1(){    var mock = new Mock<HelperClass>();    mock.SetupSequence(x => x.IsEnabled()).Returns(true).Throws(new Exception());        Assert.AreEqual(mock.Object.IsEnabled(),true);    Assert.AreEqual(mock.Object.IsEnabled(), true);}    }
  • 通過Throws方法,在第二次調用IsEnable()方法時拋出異常。

直接返回被模擬方法的原始返回值

    public class HelperClass    {public virtual Boolean IsEnabled(){    throw new Exception();}    }    [TestClass]    public class UnitTest1    {[TestMethod]public void TestMethod1(){    var mock = new Mock<HelperClass>();    mock.CallBase = true;    mock.SetupSequence(x => x.IsEnabled()).CallBase();    Assert.AreEqual(mock.Object.IsEnabled(), true);}    }

在被模擬的HelperClass類中,IsEnabled方法內部拋出異常。當把Moq實例的CallBase屬性設置為true,并調用CallBase方法,可在測試方法中直接返回被模擬類中方法的原始返回值。

模擬泛型類

    public class HelperClass<T> where T : class     {public virtual Boolean IsEnabled(){    throw new Exception();}    }    public class Sample{}    [TestClass]    public class UnitTest1    {[TestMethod]public void TestMethod1(){    var mock = new Mock<HelperClass<Sample>>();    mock.SetupSequence(x => x.IsEnabled()).Returns(true);    Assert.AreEqual(mock.Object.IsEnabled(), true);}    } 

到此這篇關于.NET使用Moq進行單元測試的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。

標簽: ASP.NET
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
丝袜美腿成人在线| 精品国产一区二区国模嫣然| 日韩一区二区三区视频在线观看| 午夜精品久久久久久久99樱桃| 国产99久久精品| 欧美另类z0zxhd电影| 免费av成人在线| 色噜噜久久综合| 日韩精品一级中文字幕精品视频免费观看 | 亚洲精品激情| 国产精品久久久久桃色tv| 91捆绑美女网站| 久久婷婷成人综合色| 成人午夜在线播放| 91精品国产黑色紧身裤美女| 亚洲一区二区三区四区在线观看 | 欧美精品三级| 久久久精品欧美丰满| 国产69精品久久久久777| 欧美欧美欧美欧美| 蜜桃视频一区二区三区| 蘑菇福利视频一区播放| 亚洲欧美日韩国产手机在线 | 久久er精品视频| 色一情一乱一乱一91av| 性做久久久久久免费观看欧美| 欧美人与禽猛交乱配| 国产网红主播福利一区二区| 成人污污视频在线观看| 在线播放视频一区| 国产成人午夜视频| 久久天天综合| 日本aⅴ亚洲精品中文乱码| 色婷婷精品大视频在线蜜桃视频| 美女视频黄久久| 日韩午夜电影av| 欧美大片专区| 一区二区三区在线播放| 国产精品一区二区在线观看 | 日韩av电影天堂| 欧美一区二区三区视频在线观看 | 一区二区三区四区精品在线视频 | 欧美一区二区美女| 国产成人免费在线视频| 欧美日韩aaa| 大胆亚洲人体视频| 欧美日韩在线不卡| 国产一区二区福利视频| 欧美精品tushy高清| 成人夜色视频网站在线观看| 欧美一级在线观看| 国产东北露脸精品视频| 久久精品一区二区三区不卡牛牛| 91亚洲精品久久久蜜桃网站| 国产精品久久久久久久裸模| 日韩午夜av在线| 亚洲一区在线免费观看| 久久精品一区| 激情六月婷婷综合| 欧美成人综合网站| 1024日韩| 一区二区三区在线高清| 在线观看日韩高清av| 国产乱国产乱300精品| 91精品久久久久久蜜臀| 成人天堂资源www在线| 欧美大片日本大片免费观看| 高清不卡一区二区在线| 日韩三级精品电影久久久| 理论电影国产精品| 欧美日韩黄色影视| 欧美一区综合| 亚洲国产电影在线观看| 红桃视频亚洲| 奇米影视一区二区三区| 欧美偷拍一区二区| 色综合中文字幕国产 | 欧美粗暴jizz性欧美20| 亚洲高清在线视频| 91精品国产91久久久久久一区二区| 欧美一区免费视频| 午夜精品久久久久久久99水蜜桃| 日韩一级二级三级精品视频| 国产综合欧美在线看| 五月天丁香久久| 日韩精品一区二| 亚洲激情一区二区三区| 免费黄网站欧美| 国产亚洲一区二区三区四区| 香蕉久久国产| 成人福利电影精品一区二区在线观看| 亚洲欧美视频一区| 欧美美女视频在线观看| 亚洲无线视频| 国内精品第一页| 亚洲视频1区2区| 67194成人在线观看| 亚洲午夜高清视频| 久久国产剧场电影| 中文字幕在线视频一区| 欧美日韩精品一区二区三区四区 | 中文字幕精品一区二区精品绿巨人 | 精品国产乱码久久久久久老虎| 一本久道久久综合狠狠爱| 国产一区二区三区美女| 亚洲精品乱码久久久久久久久 | 欧美日韩一区二| 久久国产精品色婷婷| 亚洲色图欧洲色图婷婷| 91精品一区二区三区久久久久久| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产一区二区在线电影| 一区二区在线观看免费视频播放| 日韩三级中文字幕| 国产精品久久久亚洲一区| 国产精品77777| 亚洲高清视频在线| 国产欧美日韩激情| 欧美嫩在线观看| 国产精品一区亚洲| 91免费看`日韩一区二区| 精品亚洲欧美一区| 亚洲高清在线精品| 中文字幕亚洲综合久久菠萝蜜| 5858s免费视频成人| 免播放器亚洲| 欧美天天视频| 成人av网站在线| 国内精品免费**视频| 亚洲妇女屁股眼交7| 中文字幕亚洲不卡| 久久久不卡网国产精品一区| 欧美伦理影视网| 美女黄色成人网| 一区二区在线不卡| 丁香婷婷综合激情五月色| 欧美96一区二区免费视频| 亚洲精品中文字幕在线观看| 久久久精品国产免大香伊| 欧美精品第1页| 久久一区免费| 国产欧美日韩一级| 激情国产一区| 欧美在线亚洲| 成人理论电影网| 精品一区二区三区在线播放| 亚洲国产精品视频| 亚洲欧美另类久久久精品| 国产欧美日韩精品在线| xvideos.蜜桃一区二区| 6080国产精品一区二区| 欧美性猛片xxxx免费看久爱| 国产一区二区久久久| 91片黄在线观看| 懂色一区二区三区免费观看| 国产在线精品一区二区三区不卡| 日韩电影在线看| 午夜激情一区二区三区| 亚洲精品高清在线| 国产精品久久久久久一区二区三区 | 一区二区三区蜜桃网| 中国色在线观看另类| 国产亚洲一二三区| 久久久久国产精品人| 欧美mv日韩mv| 日韩视频在线永久播放| 欧美挠脚心视频网站| 欧美综合欧美视频| 亚洲一区日本| 国产日韩三区| 国产欧美在线| 亚洲一区黄色| 久久亚洲综合网| 在线看日韩精品电影| 色8久久精品久久久久久蜜| 久久综合九色综合欧美狠狠| 久久精品成人| 色综合久久九月婷婷色综合| 久久综合久久久| 一本久道久久综合中文字幕| 久久精品五月| 色先锋资源久久综合| 在线观看成人小视频| 男人的天堂亚洲在线| 榴莲视频成人在线观看| 欧美一级专区| 一本到不卡免费一区二区| 在线观看91精品国产入口| 欧美三区免费完整视频在线观看| 欧美视频自拍偷拍| 欧美巨大另类极品videosbest| 91精品国产色综合久久不卡电影 | 午夜精品福利久久久| 三级一区在线视频先锋 | 91福利在线播放| 欧美久久久久免费| 欧美大白屁股肥臀xxxxxx| 久久婷婷国产综合国色天香 | 狠狠色2019综合网| 国产精品亚洲一区二区三区妖精 |