.NETの最も人気のあるフレンドリーなモッキングライブラリ
var mock = new mock <ilovethislibrary>(); // おお!レコード/リプレイの奇妙さはありませんか?! :) mock.setup(library => library.downloadexists( "2.0.0.0")).returns(true); //モックのオブジェクトプロパティを使用して、オブジェクトへの参照を取得します // ilovethislibraryを実装し、呼び出して行使します //メソッド ilovethislibrary lovable = mock.object; bool download = lovable.downloadexists( "2.0.0.0"); //与えられたメソッドが実際に最大で一度期待値で呼び出されたことを確認します mock.verify(library => library.downloadexists( "2.0.0.0")、times.AtmOMONCE());
MOQは、これまでに模擬にLINQを提供する最初で唯一のライブラリでもあるため、上記の同じ動作をより簡潔に達成できます。
ilovethislibrary lovable = mock.of <ilovethislibrary>(l => l.downloadexists( "2.0.0.0")== true); //メソッドを呼び出してmock.ofによって返されたインスタンスを行使してください... bool download = lovable.downloadexists( "2.0.0.0"); //単に返された状態を主張するだけです。 assert.true(download); //州のテストを超えて行きたい場合 //代わりに模擬相互作用を確認します... mock.get(lovable).verify(library => library.downloadexists( "2.0.0.0"));
linqをモックすることは、「模擬の宇宙から、行動がこの表現に一致するものを教えてください」と考えることができます。
その他の例については、クイックスタートをご覧ください!
MOQ(「モック・イウ」または単なる「モック」と発音)は、.NET LINQ Expression TreesとLambda Expressionsを最大限に活用するために、ゼロから開発された.NETの唯一のモッキングライブラリです。リファクタリングに優しいモッキングライブラリが利用可能。また、クラスだけでなく、モッキングインターフェイスもサポートします。そのAPIは非常にシンプルで簡単であり、あざけりの概念に関する予備知識や経験を必要としません。
ライブラリは、主にモッキングライブラリを使用していない(または他のいくつかの実装の複雑さに不満を抱いている)開発者向けに作成され、通常は自分のモックを手動で書いている(多かれ少なかれ「空気」を伴います)。この状況のほとんどの開発者は、たまたま非常に実用的であり、状態(または古典的な)TDDに従っています。他のモッキングライブラリからのエントリの障壁は少し高く、よりシンプルで、より軽量でエレガントなアプローチが可能であると感じたのは、それは感じる結果です。 MOQは、LINQとして共同で知られているエレガントでコンパクトなC#およびVB言語機能を最大限に活用することで、これらすべてを達成します(頭字語が示すように、クエリだけではありません)。
MOQは、テストの依存関係を迅速にセットアップするための非常に実用的で、目立たず、簡単な方法であるように設計されています。そのAPIデザインは、初心者ユーザーでさえ「成功のピット」に陥り、最も一般的な誤用/乱用を避けるのに役立ちます。
それが考案されたとき、それは他のすべてのライブラリからの一般化されたやや直感的ではない(特に初心者向けの)レコード/リプレイアプローチに反する唯一のモッキングライブラリでした(そしてそれは良いことかもしれません;))。
また、レコード/リプレイを使用しないことは、一般的な期待をフィクスチャーセットアップ方法に移動させ、特定の単体テストで必要なときにそれらの期待を無効にすることも簡単であることを意味します。
「なぜ」の詳細を読んで、KZUのブログで素敵なスクリーンショットを見ることができます。
QuickStartの例を参照して、非常にシンプルなAPIの感覚を取得し、Nugetからインストールしてください。
KZUのブログで発表について読んでください。 Scott Hanselmanの模擬図書館の状態に関する背景を取得してください。
MOQはもともと、Clarius、Manas、Insteddによって開発されました。
MOQは、傍受メカニズムとして内部的に城のダイナミックプロキシを使用して、モッキングを可能にします。
MOQは次の機能を提供します。
強いタイプ:期待のための文字列はなく、オブジェクトタイプの返品値や制約はありません
卓越したIntellisense統合とIntellisense統合:すべてが、期待の設定から、メソッドコール引数、返品値などの指定まで、完全なvs Intellisenseをサポートします。
学習するレコード/リプレイイディオムはありません。モックを構築し、セットアップして使用し、オプションで通話を確認するだけです(スタブとしてのみ機能する場合、またはテスト中のオブジェクトから返された値をチェックしてより古典的な状態ベースのテストを実行しているときに、モックを確認できない場合があります))
前の3つのポイントの結果として、非常に低い学習曲線。ほとんどの場合、ドキュメントを読む必要さえありません。
単純なモックベハビオール列挙でのモックの動作に対する粒状制御(模擬、スタブ、偽物、ダイナミックな模擬などの理論的な違いは何かを学ぶ必要はありません。
インターフェイスとクラスの両方をモックします
予想をオーバーライドする:フィクスチャのセットアップでデフォルトの期待を設定し、テストで必要に応じてオーバーライドできます
モックされたクラスのコンストラクターの引数を合格します
模擬のイベントを傍受して提起します
out/ref
引数の直感的なサポート
あなたが持っているかもしれないどんなフィードバックも深く感謝しています!チャットに自由に参加するか、問題トラッカーの問題を報告してください。
Githubスポンサーの詳細をご覧ください