2009-03-16 12 views
5

Moq 3.0を使用してIUnityContainerをモックしようとしていますIUnityContainerをどうやって模擬しますか?

私はBadImageFormatExceptionを取得していますが、デバッグしていません。見た目から私はこの問題に遭遇した唯一の人ではありません。

here

そして、部品番号

here

のためにその登録問題誰もが解決策を見つけた場合、私はちょうど好奇心が強い...私が見つけた最も近いが使用しています素敵なソリューションです。ロイOsherove

here

によってRhinoMockが、私は本当に好きMoq!だから私は本当にRhino Mockに切り替える必要はありませんが、私がしなければならないでしょう

ありがとうございました!

+0

私は同じ問題を抱えています。あなたがこれに対する解決策を見つけた場合は、私に知らせてください。 – toxvaerd

+0

だからまだ解決策はありませんか?私は3.5sp1で3.1Moqと同じ問題が発生しました。 – Shrike

答えて

4

あなたはしません。

コンテナを模擬する唯一の理由は、周囲を渡している場合だけです。それは反パターンです。

代わりに、アプリケーションのエントリポイントでオブジェクトグラフ全体を構成するか、Composition Rootとします。

オンザフライでインスタンスを作成する必要がある場合は、Automatic Factoriesを使用してください。

あなたのテストでは、テスト対象のオブジェクトを構築し、モックオブジェクトをコンストラクタに渡すか、テスト内に新しいコンテナを作成してモックオブジェクトをそれに登録することができます。

+1

私は若い頃にこの質問をしました...私はまたIoCコンテナを間違って使用していました。 –

1

本格的なモックオブジェクトが必要ですか?単に偽物を実装するだけであなたは手に入れられますか?つまり、IUnityContainerインターフェイスのテストインスタンスを実装し、対話する必要があるメソッドをオーバーライドしますか?

私はモックオブジェクトライブラリを持っているので、私は自分のシステムのすべての依存関係を分離するためにそれを使うべきだと考えて、二度以上トラップに入りました。多くの場合、より簡単なことをすることで、私が望む結果が得られます。

+0

このコメントはなぜ投票されたのですか?フォローした人はメモを残すように気をつけているので、後に続く人はSOからより良く学ぶことができます。 – Raj

+0

確かに。私は補償をupvoted。スタブを作成すると、完全に回避することで問題を解決できます(Moqを使用する必要はありません)。正当な回避策であり、これを投票した人にとっては、残りのクラスの理由を分かち合うことをお勧めします。 –

+0

おそらくStackoverflowersは認定資格を持っている人がいないのですか? :) –

0

この問題のため、私はIUnityContainerをモックしません。代わりにUnityContainerの実際のインスタンスを使用します。理想的ではありませんが、コンテナがタイプを適切に解決できることを確認して登録をテストすることができます。

IServiceLocatorを擬似的に使用してクラス内の型を解決することができます。さらには、コンテナにファクトリを登録して代わりに使用することもできます。

1

IUnityContainerの代わりにUnityBaseContainerまたはUnityContainerを嘲笑しましたか?Rory Primroseのala this post?彼はRhinoMockを扱っていますが、問題はMoqの城内での使用に関連していると思うので、この方法で問題を解決できるかもしれません。

0

これはWin x64で実行していますか?このpageをご覧ください。それは明らかに示唆している。

この例外は、ダイナミックリンクライブラリ(.dllファイル)または実行可能ファイル(.exeファイル)のファイル形式は、共通言語ランタイムによって期待されるフォーマットに準拠していない場合にスローされます。

また、原因を助けるかもしれないのx86への任意のCPUからのコンパイルフラグを変更することを提案、このブログのエントリを見つけました。 http://filips.net/archives/2008/01/17/getting-badimageformatexception-in-64-bit-windows/

編集:

はまたthis SOスレッドを見てみましょう。あなたのビルド構成マネージャーでも見てください。

関連する問題