2011-02-06 9 views
1

私は現在、Pythonマイクロブログライブラリの単体テストのセットを書いています。ここで受け取ったアドバイスは、サービスからのものと同じようにデータを返すための模擬オブジェクトを使い始めています(identi.caこの場合)。ユニットテストを束縛しないでモックオブジェクトを使用する

しかし、確実に私はデータを要求するために使用しているモジュールであるhttplib2を嘲笑しています - 私はライブラリの特定の実装にユニットテストを結びつけており、リファクタリング後に機能する能力を取り除いていますその場での単体テストの利益)。

両方のシナリオで最高のシナリオがありますか?私が考えることができる唯一のものは、テストのためだけに使用するマイクロブログサーバーを設定することですが、これは明らかに大量の作業になります。

答えて

1

ライブラリをhttplib2以外のものを使用するようにリファクタリングすると、ユニットテストが中断されることは間違いありません。そのような恐ろしい依存関係ではありません。その時が来たら、新しいライブラリを模倣するためにテストを変更するのは簡単なことです。

これを避けたい場合は、httplib2の周りに非常に最小限のラッパーを作成してください。そうすればテストで疑問に思うことがあります。 httplib2から離れて移動する場合は、ラッパーを変更するだけです。しかし、変更しなければならない行の数がいずれの場合も同じであることに注意してください。すべての変更は、「テストコード」または「非テストコード」のいずれかになります。

+0

私は、(少なくとも理論上は)httplib2を他のものと交換するのに必要な変更のサイズを減らすかもしれないと思います。ラッパーがなければ、テスト対象のクラスを変更する必要があります*とモックアップオブジェクトを変更する必要があります。ラッパーでは、ラッパーを変更するだけです(古いモックアップはまだ動作するはずです)。もちろん、ラッパーのAPIは、ライブラリーをスワップした後に変更することはできません。 –

1

あなたの問題がわかりません。モッククラスはテストの一部ですが、少なくとも概念的には。テストでは、テスト対象のコードに注入されるモックオブジェクトの特定の動作に依存することは問題ありません。もちろん、注入そのものは単体テスト間で共有する必要があり、モックアップの実装を変更するのは簡単です。

関連する問題