2012-01-03 7 views
2

私たちは、モックできないフレームワークオブジェクトに大きく依存するいくつかのクラスに対してユニットテストでMolesを使用して成功しました。私たちはSystem.Threading.ManualResetEventSystem.Threading.AutoResetEventのロードブロッキングに遭遇しましたが、これは不可解な理由からモルに抵抗するようです。具体的には、System.Threading.Moles.MManualResetEvent.AllInstances.には代理人を設定できるメソッドはありません。 System.Threading.Thread,System.Threading.MutexおよびSystem.Threading.ManualResetEventSlimは全てモル能があり、サポートになるはずです。それがなぜ、あるいは私たちが間違っているのか誰にも分かりませんか?Moles and System.Threading.ManualResetEvent

答えて

1

これは本当に問題には答えていませんが、「ロック解除可能な」オブジェクトをモックするために次の一般的なテクニックを使用することができます。から必要なメソッドとプロパティを含むインターフェイス、たとえばIManualResetEventを定義し、クラスManualResetEventAdapterは、IManualResetEventを実装し、実際にはManualResetEventをラップします。その後、アプリケーションのどこでもIManualResetEventを使用してください。これは、IManualResetEventを必要とするクラスに常にManualResetEventAdapterを渡すように指定できるので、依存性注入フレームワークをすでに使用している場合に特に便利です。

+0

合意。このような場合は、スタブを使用する必要があります。問題は、これらのコンポーネントがアプリケーションの制御の範囲外であるため、Molesラッパーアセンブリを通じて迂回することができないことです。これらは、IISなどのオペレーティングシステムや他のシステムによって処理されるプロセスなので、迂回することはできません。 –

関連する問題