私はこれを検索しましたが、すべてをキャッチしているようですが、残念ながら私が読んだものはすべてそれを理解するのに役立ちません. クラスは次のとおりです。
public interface IMockInterface
{
MockClass MockedMethod();
MockClass MockThis();
}
public class MockClass : IMockInterface
{
public virtual MockClass MockedMethod()
{
MockClass returnValue;
returnValue = new MockClass();
returnValue.SomeMessage = "Not mocked";
return returnValue;
}
public MockClass MockThis()
{
MockClass mock;
MockClass returnValue;
mock = new MockClass();
return mock.MockedMethod();
}
}
そしてテスト:
public void MockTest_Internal()
{
MockClass mainClass;
MockClass returnedClass;
IMockInterface mockProvider;
mainClass = new MockClass();
mockProvider = repository.StrictMock<IMockInterface>();
Expect.Call(mockProvider.MockedMethod())
.Return(new MockClass { SomeMessage = "Mocked" });
repository.ReplayAll();
returnedClass = mainClass.MockThis();
provider.AssertWasCalled(item => item.MockedMethod());
Assert.IsTrue(returnedClass.SomeMessage == "Mocked");
}
また、試してみましたが機能しません
しかし、私はこの例外を受け取り続けています:
Rhino.Mocks.Exceptions.ExpectationViolationException:
IMockInterface.MockedMethod(); 期待された #1、実際の #0
私が読んだことから、これは、メソッドが予想とは異なるパラメーターで呼び出されたか、メソッドが呼び出されなかったが呼び出されることが予想されていたことを示唆しています。これはテストの場合ではありません。
補足: 社内コードなしで Rhino.Mocks を実際に使用するのはこれが初めてなので、基本的には作業を進めていきます。ここには本当にばかげた何かがあるかもしれません...
これはコメントされた古いテストでしたが、私が使用すべきだったものではありません:
public void MockTest_Internal()
{
MockClass mainClass;
MockClass returnedClass;
IMockInterface mockProvider;
mainClass = new MockClass();
var provider = MockRepository.GenerateStub<IMockInterface>();
provider.Stub(item => item.MockedMethod())
.Return(new MockClass { SomeMessage = "Mocked" });
returnedClass = mainClass.MockThis();
provider.AssertWasCalled(item => item.MockedMethod());
Assert.IsTrue(returnedClass.SomeMessage == "Mocked");
}