偽物より疑似?[定休日]
-
25-09-2019 - |
質問
解決
私は間違いなく1つのフレームワークが良く、他のよりあるかどうかは言えないでしょうので、明確にするために、私はFakeItEasyを作成し、どのような私にできることはいくつかの違いと意欲を高めるアウトポイントです。の理由の私はFakeItEasyを作成しました。機能的には部品番号とFakeItEasyの間には大きな違いはありません。
FakeItEasyには「検証可能」または「期待」、それはしかし、これらは常に明示的にテストの最後に記載されているアサーションを持って、私が読んで理解するために、この可能テストは簡単に信じていません。また、(彼らは多くのコールまたはモックオブジェクトへの期待を設定する場所)を避ける倍に初心者がアサートするのに役立ちます。
私は前にRhinoのモックを使用し、私は非常にそれが好き、AAA-構文を導入した後、特に私は、しかし、より良い部品番号の流暢APIのようでした。私は部品番号で好きではなかったことは、私はより良い「自然な」モックとサイ・アプローチのように、あなたはどこにでもmock.Objectを使用する必要があり、「モックオブジェクト」でした。偽造タイプの通常のインスタンスなどのすべてのインスタンスのルックスと感じています。私は両方の長所を望んでいたとも私は絶対に自由に手を持っていたとき、私は構文を使用して何ができるか見てみたかったです。個人的に私は(明らかに)私は両方の世界から最高との良好なミックスで何かを作成したと思うが、それは非常に簡単ときに巨人の肩の上に立っているのです。
としては、ここで述べられている主な違いの一つは専門用語であり、FakeItEasyが最初にあなたがしなければならない道をTDDを導入するために作成し、初心者にモックとフロントアップモックとスタブ間の違い(気にするましたRhinoは)私の意見では非常に有用ではありません。
私は例外メッセージに焦点をたくさん入れている、それがテスト中whent間違っただけの例外メッセージを見て何を伝えることは非常に簡単なはずです。
FakeItEasyは、他のフレームワークが持っていないが、これらは非常によく、まだ文書化されていないことを、いくつかの拡張機能を備えています。
FakeItEasyは、(できれば)、それは使用にダミー値を解決するための機構を有しているので、コンストラクタ引数を持つクラスをモックで少し強いです。あなたも、あなたのテストプロジェクト内(Tの)DummyDefinitionクラスを実装することにより、独自のダミーの値の定義を指定することができ、これは自動的にFakeItEasyによってピックアップされます。
の構文は1つが優れている明らかな違いは、主に好みの問題です。
私は確かに私はおよそ今忘れて(そしてそれの私の知識が限られているので、私は生産に自分自身を部品番号を使用したことがない公平であるために)という他の違いがたくさんあるんだ、私はこれらはしかし、最も重要な違いだと思いますます。
他のヒント
テストで使用される用語は、わずかに混乱することができます。異なる概念の違いを説明する最良のソースは、モックは、Martin Fowler氏によるないスタブしていますです。要約すると、の偽のはスタブやモックの両方を説明する総称である。
の用語で嘲笑う混乱させ、時にはかなりunintuitive.
そのため、多くの人に提案し、より簡便な、新しい用語は、ご存知ですか? 偽物, 疑似, は、 スタブ.
偽 は、すべての種類の試験を兼ねながら、どのように使用します。
その向こうに 偽物 を特徴付けと一寸法:う影響試験の結果となり、または、その持っているかどうかの設定の戻り値は偽であるかに使用中の試験の実行は、これは"黙'オブジェクト用していを満たす一部の依存性がある。
スタブ であると黙'オブジェクトです。
模擬 であ に積極的に参加して テスト実行
そして、なに大別される確実にその歴史的メリットは、主にカウンター-直感的でacademical、このようなobfuscatingにとって重要な概念のテスト駆動開発。
に関する比較 Moq や FakeItEasy:の枠組み 大同 からの概念の視点の の違いだけのAPIの用語...
トーマス
ではない例えばモックをキャンセルするビューの偽の私の視点から、私は偽物のDALとビジネス層へのDevマジックフェイクを使用し、同じ時間に私はいるHttpContext
のためにMVCでモックを使いますvar repoistory = new FakeRepository<ProductTypeForm, VendorForm>();
repoistory.Save(productTypeForm);
this.FillDropDown(new FakeRepository<VendorForm>());
ProductTypeFormを保存し、DevのマジックフェイクからVendorFormを取得し、保存操作これは永久的なことができ、ProductTypeFormにリンクします前のコードのDevマジックフェイクでDevのマジックフェイク詳細inforamtionのために
はCodePlexの上でそれを参照してください。 http://devmagicfake.codeplex.comする
Teのテスト我々はHTTPコンテキスト
モックする必要があり、この方法var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
偽物とだから私の仕事とモック