1. ホーム
  2. unit-testing

[解決済み] モッキングとは?

2022-03-16 16:17:41

質問

モッキングとは何ですか?

どのように解決するの?

プロローグ という名詞を調べると モック を辞書で調べると、この言葉の定義のひとつに、次のようなものがあります。 模倣で作ったもの .

モッキングは主に単体テストで使用されます。テスト対象のオブジェクトは は、他の(複雑な)オブジェクトに依存している。動作を分離するために 他のオブジェクトをモックで置き換えて、そのオブジェクトの 実際のオブジェクトの挙動をシミュレートする。これは、実際の オブジェクトをユニットテストに組み込むことは現実的ではありません。

要するに、モッキングとは、その動作をシミュレートするオブジェクトを作成することです。 実オブジェクトを使用します。

を区別したい場合があります。 モッキング とは対照的に スタブ . このテーマについては意見が分かれるかもしれませんが、私のスタブの定義は、シミュレーションされたオブジェクトの最小限のものです。スタブは、テスト対象のオブジェクトがテストを実行するのに必要なだけの振る舞いを実装しています。

モックはスタブのようなものですが、テストでは、テスト対象のオブジェクトが期待通りにモックを呼び出すかどうかも検証します。モックが正しく使用されているかどうかを確認することも、テストの一部です。

例を挙げると 例えば、レコードを保存するための簡単なインメモリ構造を実装することで、データベースをスタブ化することができます。テスト対象のオブジェクトは、データベースのスタブに対してレコードの読み書きを行い、 テストを実行できるようにします。これは、データベースとは関係のないオブジェクトの振る舞いをテストするもので、 データベーススタブはテストを実行させるためだけに含まれることになります。

その代わりに、テスト対象のオブジェクトがデータベースに特定のデータを書き込むことを検証したい場合は、データベースをモック化する必要があります。そして、そのモックに書き込まれた内容についてのアサーションをテストに組み込むことになります。