.net最受歡迎,最友好的嘲笑圖書館
var mock = new Mock <IloveThislibrary>(); // 哇!沒有記錄/重播怪異嗎? :) mock.setup(library => library.downloadexists(“ 2.0.0.0”))。返回(true); //使用模擬上的對象屬性獲取對對象的引用 //實施ilovethislibrary,然後通過致電來鍛煉它 //上面的方法 ilovethislibrary lodable = mock.Object; bool download = lovable.downloadexists(“ 2.0.0.0”); //驗證給定方法的確最多一次以期望值為單位 mock.verify(library => library.downloadexists(“ 2.0.0.0”),times.times.tomposonce());
MOQ也是到目前為止的第一個也是唯一的圖書館,可以為模擬提供Linq,因此上述相同的行為可以更簡潔地實現:
ilovethislibrary lodable = mock。 //練習通過在其上調用方法返回的實例... bool download = lovable.downloadexists(“ 2.0.0.0”); //只需主張返回的狀態: assert.true(下載); //如果您想超越國家測試並想 //改為驗證模擬互動... mock.get(lodable).verify(庫=> library.downloadexists(“ 2.0.0.0”));
您可以將Linq視為“從模擬宇宙中,給我一個與此表達相匹配的行為”。
查看QuickStart以獲取更多示例!
MOQ(發音為“模擬您”或僅“模擬”)是從頭開始開發的.net唯一模擬庫,可以充分利用.NET LINQ Expression Trees和Lambda表達式,這使其成為最有生產力,類型的安全性和可用重構友好的模擬庫。它支持模擬接口和類。它的API非常簡單明了,不需要任何嘲笑概念的先驗知識或經驗。
該庫主要是為當前不使用任何模擬庫(或對某些其他實現的複雜性不滿意的開發人員而創建的),他們通常手動編寫自己的模擬(或多或少具有“幻想”)。在這種情況下,大多數開發人員也恰好是務實的,並且遵守狀態(或經典)TDD。這是因為感覺到來自其他模擬圖書館的進入障礙有點高,並且可以一種更簡單,更輕巧和優雅的方法。通過充分利用優雅而緊湊的C#和VB語言功能,歐克人實現了所有這些功能(它們不僅是用於查詢,就像首字母縮寫所暗示的那樣)。
MOQ的設計是一種非常實用,不引人注目且直截了當的方式,可以快速為您的測試設置依賴項。它的API設計有助於新手用戶陷入“成功坑中”,並避免嘲笑的最常見的濫用/濫用。
當它被構思時,它是唯一與所有其他圖書館的錄音/重播方法相抵觸的唯一嘲笑圖書館(尤其是對於新手)的記錄/重播方法(這可能是一件好事;)。
不使用記錄/重播也意味著將共同期望移至固定設置方法,甚至在特定單位測試中需要時覆蓋這些期望是很簡單的。
您可以在Kzu的博客上閱讀有關“為什麼”的更多信息,並在Kzu的博客上查看一些不錯的屏幕截圖。
請參閱我們的Quick Start示例,以感受到非常簡單的API並從Nuget安裝。
在Kzu的博客上閱讀有關公告的信息。從斯科特·漢塞爾曼(Scott Hanselman)獲得模擬圖書館狀態的一些背景。
歐克最初是由克拉里烏斯(Clarius),馬納斯(Manas)和Instedd開發的。
歐克人在內部使用Castle Dynamproxy作為攔截機制來嘲笑。
歐洲簽提供以下功能:
強大的:沒有期望的字符串,沒有對像類型的返回值或約束
無與倫比的vs Intellisense集成:從設置期望,到指定方法呼叫參數,返回值等,一切都支持完整的Intellisense。
沒有記錄/重播成語要學習。只需構建模擬,將其設置,使用它並可選地驗證調用呼叫(您只能在模擬中充當存根,或者通過從測試中的對象檢查返回的值來進行更經典的基於狀態的測試時,您不得驗證它們的呼叫)
由於前三點的結果,學習曲線非常低。在大多數情況下,您甚至不需要閱讀文檔。
用簡單的模擬行為枚舉對模擬行為的顆粒狀控制(無需了解模擬,存根,假,動態模擬等之間的理論差異。)
模擬界面和類
覆蓋期望:可以在固定設置中設置默認期望,並根據需要在測試中覆蓋
通過模擬課程的構造論參數
攔截並提高模擬事件
對out/ref
參數的直觀支持
我們深切感謝您可能獲得的任何反饋!請隨時參加聊天,或在問題跟踪器中報告問題。
了解有關GitHub贊助商的更多信息