1. ホーム
  2. unit-testing

[解決済み] スタブとは?

2022-06-09 01:46:06

質問

さて、TDDにもっと入り込もうという新年の決意を胸に、私は今、より多く Rhinoモック .

私がやりたいと思っていることの一つは、自分が何に取り込まれているのかを本当に理解しているかどうかを確認することです。

スタブとは何ですか?

どのように解決するのですか?

Martin Fowlerは次のように書いています。 素晴らしい記事 を書きました。その記事から

Meszarosはテストダブルという言葉を、テスト目的で実際の物体の代わりに使用される、あらゆる種類の見せかけの物体の総称として使用しています。この名前は、映画におけるスタントダブルの概念に由来しています。(彼の目的の 1 つは、すでに広く使われている名前を使用しないことでした。) Meszaros は次に、4 種類の特定のダブルを定義しました。

  • ダミー オブジェクトは渡されますが、実際には決して使用されません。通常、それらは単にパラメータ リストを埋めるために使用されます。
  • 偽のオブジェクトは実際に動作する実装を持っていますが、通常は何らかのショートカットを使っているため、実稼働には適していません (インメモリデータベースが良い例です)。
  • スタブは、テスト中に行われた呼び出しに対して定型的な回答を提供し、通常、テスト用にプログラムされたもの以外にはまったく反応しません。スタブはまた、「送信」したメッセージを記憶する電子メール ゲートウェイ スタブのような、コールに関する情報を記録することもありますし、「送信」したメッセージの数だけを記憶することもあります。
  • モックとは、私たちがここで話しているものです。

私自身の言葉で言うと、モックオブジェクトは特定のメソッドが呼び出されることを期待し、一般的にその期待が満たされないとユニットテストが失敗する原因となるのです。スタブオブジェクトは定型的な応答を提供しますが(ヘルパーライブラリによって自動生成されることもあります)、通常、以下のようになります。 ではありません。 直接ユニットテストを失敗させることはありません。これらは通常、テストしているオブジェクトがその作業を行うために必要なデータを取得するために使用されるだけです。