Moq的一些基本用法 - 程式人生

文章推薦指數: 80 %
投票人數:10人

本篇體驗Moq的一些基本用法。

首先通過NuGet安裝Moq。

包括: 模擬方法的返回值 ... Moq模擬的方法一般是virtual虛方法,介面方法○ mock. 程式人生>net教程>Moq的一些基本用法 Moq的一些基本用法 •net教程•發佈:2018-10-05 本篇體驗Moq的一些基本用法。

首先通過NuGet安裝Moq。

包括:   模擬方法的返回值 模擬方法後執行回撥函式 模擬方法依次返回多個值 模擬第二次呼叫方法返回異常 直接返回被模擬方法的原始返回值 模擬泛型類    模擬方法的返回值 publicclassHelperClass{publicvirtualBooleanIsEnabled(){thrownewException();}}[TestClass]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){varmock=newMock();mock.Setup(x=>x.IsEnabled()).Returns(true);Assert.AreEqual(mock.Object.IsEnabled(),true);}}   ●Moq模擬的方法一般是virtual虛方法,介面方法●mock.Object是指HelperClass的例項    模擬方法後執行回撥函式 [TestClass]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){stringtemp="";varmock=newMock();mock.Setup(x=>x.IsEnabled()).Returns(true).Callback(()=>{temp="success";});Assert.AreEqual(mock.Object.IsEnabled(),true);if(temp=="success"){//TODO}}} ●執行Return方法後,執行Callback回撥方法,接收的引數型別是委託    模擬方法依次返回多個值 [TestClass]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){varmock=newMock();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]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){varmock=newMock();mock.SetupSequence(x=>x.IsEnabled()).Returns(true).Throws(newException());Assert.AreEqual(mock.Object.IsEnabled(),true);Assert.AreEqual(mock.Object.IsEnabled(),true);}} ●通過Throws方法,在第二次呼叫IsEnable()方法時丟擲異常。

   直接返回被模擬方法的原始返回值 publicclassHelperClass{publicvirtualBooleanIsEnabled(){thrownewException();}}[TestClass]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){varmock=newMock();mock.CallBase=true;mock.SetupSequence(x=>x.IsEnabled()).CallBase();Assert.AreEqual(mock.Object.IsEnabled(),true);}} 在被模擬的HelperClass類中,IsEnabled方法內部丟擲異常。

當把Moq例項的CallBase屬性設定為true,並呼叫CallBase方法,可在測試方法中直接返回被模擬類中方法的原始返回值。

   模擬泛型類 publicclassHelperClasswhereT:class{publicvirtualBooleanIsEnabled(){thrownewException();}}publicclassSample{}[TestClass]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){varmock=newMock>();mock.SetupSequence(x=>x.IsEnabled()).Returns(true);Assert.AreEqual(mock.Object.IsEnabled(),true);}} [Asp.net]絕對路徑和相對路徑 «上一篇 ??運算子(C#參考)下一篇» 相關推薦 關於HTML框架(frameset)的一些基本用法 www.否則pan不同set標簽不一定vue.js相同borderframeset 定義 W3C是這樣定義... androidAndoridManifest.xml一些基本用法 AndoridManifest.xml是一個xml具體是什麼東西 百度比我解釋的好我這邊只是一些常用的... 集合框架--Map集合的一些基本用法 packagecn.itcast.api.a.map; importjava.util.Collectio... Tensorflow的一些基本用法 在使用TensorFlow中會遇到一些其基本的用法,再次作為記錄備忘! tf.add_to_collect... C++的一些基本用法 這篇部落格可能不是像通常的程式設計書籍一樣,從“helloworld”進行一個視覺化的一個例程,主要就是對一些... Hibernate中的Query一些基本用法 /***新增*/publicvoidsave(Stustu){  try{   tran=this.GetSe... vim的一些基本用法 標題 首先vim有三種模式1命令模式2插入模式3退出模式 一vim的命令模式配置下p貼上u撤銷ctrl+r恢復撤銷... shutil的一些基本用法 importshutil importtime importtarfile #將檔案內容拷貝到另一個檔案中 shutil.copyfileobj(... Jquery的一些基本用法 1、獲取指定name的radio選定的值:vara=$("input[name='price']:checked").attr("value");2、獲取指定... jQuery一些基本用法 1、關於頁面元素的引用通過jquery的$()引用元素包括通過id、class、元素名以及元素的層級關係及dom或者xpath... 搜尋 基礎教學 WIN技巧 python技巧 linux技巧 mysql技巧 php技巧 Html教程 JS教程 java教程 net教程 IOS教程 最近訪問



請為這篇文章評分?