0

Moqを使用してVS2012で最初のユニットテストを書いています。

複数の入力パラメーターを受け取るオブジェクトを作成する必要があります (すべてがインターフェイスを介して渡されるわけではありません)。

例のためにコードを最小化しました。これが私がやろうとしていることです:

  var mockLoopControl = new Mock<LoopControl>();
  var LoopEngine = new LoopEngine(mockLoopControl.Object);

LoopControlオブジェクトは複雑で、コンストラクターで使用される多くのメンバーがありますLoopEngine

たとえば、LoopEngineコンストラクターはloopControl.ContextData、再び多くのメンバーを持つオブジェクトで操作を実行します。

私の理解では、を使用して使用されるメンバーにデータを割り当てる必要がありますMock.Setup()。たとえば、loopControl.ContextDataアプリケーションの実行時にオブジェクトのスナップショットを取得し、後で単体テストで使用することはできますか?

このような複雑なアーキテクチャの単体テストを作成する方法を理解できます。

私は自分自身を明確にしたことを願っています:)助けてくれてありがとう。

ダン

4

3 に答える 3

3

その複雑な構造を作成する必要がないように、それをモックします。LoopEngine何かを使用する必要がある場合、それは多くのことをしている可能性LoopControlがありますか? たぶん、その作業の一部をLoopControlまたは他のオブジェクトに委任する必要がありますか? おそらく、他のオブジェクトをいくつか抽出して、別のことを行う必要があります。

ここで間違った問題を少し解決しようとしているように思えます。

さらに多くの機能をテストしたい場合は、統合テストを行っている可能性があります。次に、より複雑なオブジェクト構造が必要になる場合があります - そうです。ただし、必ずしもモックを使用する必要はありませんが、実際の状況で結果を確認する必要があります。

于 2013-05-10T13:17:47.033 に答える