次のテストがあります。
IUnityContainer unityContainer = MockRepository.GenerateStrictMock<IUnityContainer>();
unityContainer.Expect(c => c.IsRegistered<IServiceContainerRegistrar>()).Return(true).Repeat.Once();
私が知る限り、私は IUnityContainer のモックを作成しており、誰かがIsRegistered
メソッドを呼び出したときに何を返すかを彼に伝えています。
次の例外が発生します。
Test method CommonInitializerTest.CommonInitializer_Initialize_WorksOnce threw exception:
System.InvalidOperationException: Previous method 'IEnumerator.MoveNext();' requires a return value or an exception to throw.
次のスタックトレースを使用:
at System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source)
at Microsoft.Practices.Unity.UnityContainerExtensions.IsRegistered(IUnityContainer container, Type typeToCheck, String nameToCheck)
at Microsoft.Practices.Unity.UnityContainerExtensions.IsRegistered(IUnityContainer container, Type typeToCheck)
at Microsoft.Practices.Unity.UnityContainerExtensions.IsRegistered(IUnityContainer container)
at Drives.Services.Common.Tests.CommonInitializerTest.<CommonInitializer_Initialize_WorksOnce>b__0(IUnityContainer c) in CommonInitializerTest.cs: line 50
at Rhino.Mocks.RhinoMocksExtensions.Expect(T mock, Function`2 action)
したがって、Expect は実際のコードを呼び出しており、Unity で使用されるすべてをモックしていないため、失敗しています。RhinoMock が期待値を登録するときに実際のコードを実行するのはなぜですか?????