日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

.NET使用Moq進(jìn)行單元測(cè)試

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

本篇體驗(yàn)Moq的一些基本用法。首先通過(guò)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的實(shí)例

模擬方法后執(zhí)行回調(diào)函數(shù)

   [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    }}    }
  • 執(zhí)行Return方法后,執(zhí)行Callback回調(diào)方法,接收的參數(shù)類型是委托

模擬方法依次返回多個(gè)值

    [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方法可以為方法返回多個(gè)值

如果把以下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);

結(jié)果,測(cè)試不通過(guò)。因?yàn)镾utupSequence返回方法返回值的時(shí)候是有順序的。

模擬第二次調(diào)用方法返回異常

    [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);}    }
  • 通過(guò)Throws方法,在第二次調(diào)用IsEnable()方法時(shí)拋出異常。

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

    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方法內(nèi)部拋出異常。當(dāng)把Moq實(shí)例的CallBase屬性設(shè)置為true,并調(diào)用CallBase方法,可在測(cè)試方法中直接返回被模擬類中方法的原始返回值。

模擬泛型類

    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);}    } 

到此這篇關(guān)于.NET使用Moq進(jìn)行單元測(cè)試的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

標(biāo)簽: ASP.NET
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99riav国产精品| 91精品国产自产在线丝袜啪| 久久一区二区三区喷水| 久久激情婷婷| 精品99在线| 香蕉国产精品| 成人在线视频免费看| 一区久久精品| 欧美二三四区| 伊人久久视频| 7777精品| 久久三级中文| 99国产精品99久久久久久粉嫩| 国产成人a视频高清在线观看| 99精品一区| 麻豆精品一区二区综合av| 蜜臀国产一区| 91嫩草亚洲精品| 91亚洲精品在看在线观看高清| 久久精品二区亚洲w码| 久久天堂av| 伊人www22综合色| 久久精品国产亚洲夜色av网站| 国产一在线精品一区在线观看| 国产极品模特精品一二| 麻豆91在线播放| 午夜日本精品| 亚洲精品亚洲人成在线观看| 亚洲欧美网站在线观看| 水蜜桃久久夜色精品一区的特点| 秋霞影视一区二区三区| av最新在线| 精品资源在线| 国产精品免费看| 91中文字幕精品永久在线| 中文不卡在线| 国产精品丝袜xxxxxxx| 国产欧美在线观看免费| 久久蜜桃资源一区二区老牛| 国产日韩欧美一区在线| 久久久久欧美精品| 在线国产精品一区| 毛片在线网站| 青青青国产精品| 三级欧美韩日大片在线看| 精品视频99| 精品免费av| 丝袜亚洲另类欧美| 99日韩精品| 91av亚洲| 国产极品模特精品一二| bbw在线视频| 国产精品免费不| 欧美国产偷国产精品三区| 日韩成人精品一区二区| 亚洲资源在线| 久久亚洲国产精品一区二区| sm捆绑调教国产免费网站在线观看| 日韩精品视频一区二区三区| 久久亚洲精品伦理| 深夜福利一区| 国产99在线| 91一区二区三区四区| 成人日韩在线观看| 私拍精品福利视频在线一区| 桃色一区二区| 日韩av中文在线观看| 中文字幕日韩亚洲| 日韩电影在线视频| 国产乱人伦丫前精品视频| 高清日韩中文字幕| 美国三级日本三级久久99| 国产精品一区二区三区美女| 欧美伊人久久| 国产欧美在线观看免费| 久久精品动漫| 视频一区视频二区中文| 日韩一区精品| 欧美三级第一页| 国产乱子精品一区二区在线观看| 香蕉精品999视频一区二区| 红杏一区二区三区| 伊人久久成人| 99视频精品全国免费| 日本不卡视频一二三区| 精品久久在线| 亚洲午夜精品久久久久久app| 色偷偷偷在线视频播放 | 国产+成+人+亚洲欧洲在线| 亚洲一区av| 国产精品久久久久久久久久10秀 | 中文在线不卡| 日韩精品2区| 久久av一区二区三区| 国产精品午夜一区二区三区| 欧美.日韩.国产.一区.二区| 成人在线超碰| 亚洲毛片视频| 91视频一区| 91欧美极品| 99热精品久久| 久久国产主播| 精品99在线| 日韩不卡免费视频| 影音国产精品| 久久不见久久见免费视频7| 久久精品不卡| 欧美欧美黄在线二区| 欧美视频精品全部免费观看| 亚洲人成亚洲精品| 一区二区视频欧美| 精品免费av一区二区三区| 日韩精品一区二区三区中文在线| 欧美激情视频一区二区三区免费| 国产aⅴ精品一区二区三区久久| 老司机精品视频在线播放| 久久精品国产在热久久| 石原莉奈一区二区三区在线观看| 麻豆精品一区二区综合av| 日韩欧美精品一区| 午夜精品成人av| 精品丝袜在线| 成人在线免费观看网站| 精品视频一区二区三区在线观看| 综合亚洲色图| 午夜视频精品| 日韩在线观看一区| 国产免费av国片精品草莓男男| 亚洲精品成人一区| 国产精品中文字幕制服诱惑| 亚洲精品看片| 色婷婷精品视频| 99成人超碰| 999久久久91| 国产精品99视频| 国产色综合网| 三上亚洲一区二区| 狠狠久久伊人| 日韩啪啪电影网| 99久久婷婷这里只有精品| 久久精品国产一区二区| 国产亚洲精品美女久久| 日本在线高清| 美女精品在线| 亚洲国产专区| 日韩午夜高潮| www.com.cn成人| 亚洲一区二区毛片| 日韩av在线免费观看不卡| 国产精品va| 亚洲九九精品| 九色porny丨国产首页在线| 国产精品视频3p| 日韩有码av| 亚洲精品免费观看| 丝袜国产日韩另类美女| 日韩一级欧洲| 99国产精品久久久久久久| 国产不卡精品| 国产传媒在线观看| 久久婷婷一区| 欧美搞黄网站| 国产亚洲一级| 蜜桃久久av一区| 在线一区免费观看| 午夜久久久久| 国产精品日韩| 久久男女视频| 亚洲免费高清| 中文av在线全新| 美女精品在线观看| 欧美在线亚洲| 婷婷亚洲五月| 日韩精品一区二区三区av| 国产精品日韩| 亚洲精品国模| 国内在线观看一区二区三区 | 日本电影久久久| 国产欧美日韩一级| 日本成人手机在线| 99视频精品全部免费在线视频| 国产极品模特精品一二| 成人在线观看免费视频| 亚洲区欧美区| 亚洲一区国产| 亚洲免费毛片| 日韩高清不卡在线| 精品视频免费| 国产精品一级在线观看| 国产精品白浆| 久久天堂影院| 午夜欧美在线| 久久精品av| 日韩精品免费一区二区夜夜嗨| 国产日产精品一区二区三区四区的观看方式| 国产精久久久| 福利一区二区免费视频| 老司机免费视频一区二区| 国产美女一区| 亚洲欧美日韩视频二区|