9

テストしたい Python コードにモックを挿入する 2 つの異なるアプローチを見ることができます。

  1. 依存性注入:

    連携するクラスがテスト対象オブジェクトのコンストラクターに渡されるようにし、モック オブジェクト (および必要に応じて Java などのファクトリ) を渡します。

  2. モンキーパッチ:

    モック オブジェクト ファクトリを使用して、テスト対象のモジュール内の共同作業クラスをスタブ化します (共同作業クラスを構築すると、実際にモック オブジェクトが作成されます)。コンストラクターを介してそれらを注入したり、ファクトリーを作成したりする必要はありません。

これらのアプローチはどちらも、python モッキング ライブラリ ( moxmockなど) でサポートされているようです。Pythonでどのアプローチを使用する必要がありますか、これらのいずれかが賢明ですか、それともより良いアプローチがありますか?

4

2 に答える 2

3

DI をできるだけ頻繁に使用することは一般的に便利ですが、次のような理由で実行できない場合もあります。

  • 組み込み関数またはオブジェクト (ファイルなど) を使用する
  • サードパーティ機能
  • 非決定論的なオブジェクト/呼び出しなどを使用します。

そのときは、モンキー パッチを適用する必要があります。

ほとんどすべての場合で回避できるはずであり、理論的には 100% 回避できますが、モンキー パッチの例外を作成する方が合理的な場合もあります。

于 2012-07-12T11:05:23.487 に答える