2016-08-24 10 views
1

私はしばしば、モックを避けて、スタブを好むべきであることをラドにします。なぜ私はモックよりもスタブを好むべきですか?

FakeItEasyやNS substituteのような分離フレームワークは、依存関係を模倣したりスタブしたりするのがとても簡単です。これらのフレームワーク自体は、スタブやモックを区別しませんが、フェイクや代用品と呼んでいます。 "Mocking"の初期段階でわかっている限り、厄介なRecord and Replayメカニズムを使用するので、モックオブジェクトを作成するのは非常に難しかったです。しかし、今日はもう大きな違いはないようです。

なぜ私はモックよりスタブを好むべきですか?なぜモックはスタブよりも壊れやすいのですか?

答えて

3

Mockよりもスタブを優先してはいけません。むしろ、あなたは仕事のための適切なツールを選択する必要があります

Mocks for Commands, Stubs for Queries

+0

あなたの答えをありがとう。多分私は別の質問をしていたはずです。モックはスタブよりも多くのダメージを与えるのはなぜですか?なぜモックはスタブよりも壊れやすいのですか? – Rookian

+0

私は100K +担当者からのより良い答えを期待します。たとえば、「スタブ」と「モック」の概念を自分の言葉で定義することができます(リンクのみが推奨されています)。しかし、この回答の最大の問題は、実際の模倣図書館が提供するものと矛盾する「古い」(2007年)の本の欠陥の「模倣」の定義に基づいていることです。つまり、理論と実践との間には断絶があります。 –

+0

@ルーキアン私は質問の前提が少し欠陥があると思います。 Gerard Meszarosがその古い(明らかに役に立たない)本で説明しているように、Commandsは*直接出力*ではなく*間接出力*を生成します。間接出力を直接出力に変換することもできますし、逆もありますので、実際には同等です。私が推測しなければならないのは、モックがモックを相互にあまりにもやり取りする傾向があるからです。モック自体の問題よりも、あまりにも多くのことを一度に行うことに関連する問題です。 –

-1

最近のモッキングツールでは、少なくともスタブとモックの関係は邪魔になりません。実際には、モックとスタブはモックライブラリによって作成されたときと同じものです。そして、これがどうあるべきかです。

Java用の模擬ライブラリ(C#.NETでも間違いがなければ)でも、スタブを作成することはできません。 いつもは、期待を検証できるモックオブジェクトを取得します。

+0

をハァッ「あなたはいつも期待が検証可能なモックオブジェクトを取得しますか」?スタブの検証は行いません。両者にはまだ違いがあります。 – Rookian

+0

@Rookian期待どおりに検証できないスタブだけを作成するための模擬ライブラリを指すことができますか?私はそのようなライブラリを知らない。 –

+1

このようなライブラリは、スタブやモックを作成するのではなく、スタブやモックとして使用できる偽のオブジェクトを作成します。 – Rookian

関連する問題