バックグラウンド スレッドをスピンアップするように設計されたクラスがあり、そこからマネージャーへの呼び出しが行われます。このマネージャーは、単体テストのためにモックされます。関連するコードの断片は次のとおりです。
MockRepository mocks = new MockRepository();
ICacheManager manager = mocks.CreateMock<ICacheManager>();
Expect.On(manager).Call(manager.CacheSize).Return(100);
mocks.ReplayAll();
CacheJanitor janitor = new CacheJanitor(manager);
// get janitor to do its stuff
// ...
mocks.VerifyAll();
問題は、検証時に 2 つの例外がスローされることです。1 つはテスト スレッドで への呼び出しCacheSize
が予期されていたが発生しなかったことを示し、もう 1 つはバックグラウンド スレッド ( 内CacheJanitor
) で への呼び出しがCacheSize
発生したが予期されていなかったことを示しています。
明らかに、期待は、それらが作成されたスレッドに類似しています。Rhino Mocks に別のスレッドでの呼び出しを期待するように指示する方法を知っている人はいますか (期待が定義されている時点では存在しません)。
編集:
当面はまだ VS 2005 を使用しているという制約について言及するのを忘れていました。Rhino Mocks のバージョンは 3.4 です - 3.5 で試してみますが、改善点のリストにはこの領域の修正が示されていないようです。
とりあえず、この一連のテスト用に独自のモック オブジェクトを作成し、その中に結果を記録しますが、Rhino モックを使用してこれをきれいに達成できるソリューションがあれば間違いなく感謝します。