J'ai une classe très simple avec deux méthodes; Un qui sera appelé et l'autre qu'il appellera. L'idée est d'appeler la méthode OuterMockMethod MAIS simuler le InnerMockMethod. En ce moment je peux seulement sembler me moquer de la méthode OuterMockMethod.Rhino Mocks: Comment simuler un appel de méthode dans un appel de méthode?
public class MockClass : IMockInterface
{
public virtual MockClass InnerMockMethod()
{
MockClass returnValue;
returnValue = new MockClass();
returnValue.SomeMessage = "Not mocked";
return returnValue;
}
public virtual MockClass OuterMockMethod()
{
MockClass mock;
mock = new MockClass();
return mock.MockedMethod();
}
}
Maintenant, cela fonctionne, mais ce n'est pas la méthode que je veux railler:
public void MockTest_Internal()
{
MockClass returnedClass;
MockClass mockProvider;
mockProvider = repository.StrictMock<MockClass>();
mockProvider.Expect(item => item.OuterMockMethod())
.Return(new MockClass { SomeMessage = "Mocked" });
repository.Replay(mockProvider);
returnedClass = mockProvider.OuterMockMethod();
Assert.IsTrue(returnedClass.SomeMessage == "Mocked");
}
Comme vous pouvez le voir, il appelle la OuterMockMethod qui il aime, mais je ne veux pas. Je veux me moquer de l'InnerMockMethod de sorte que quand il est appelé par OuterMockMethod, il retournera ce que je veux.
public void MockTest_Internal()
{
MockClass returnedClass;
MockClass mockProvider;
mockProvider = repository.StrictMock<MockClass>();
mockProvider.Expect(item => item.InnerMockMethod())
.Return(new MockClass { SomeMessage = "Mocked" });
repository.Replay(mockProvider);
returnedClass = mockProvider.OuterMockMethod(); //Boom angry Rhino
Assert.IsTrue(returnedClass.SomeMessage == "Mocked");
}
Merci encore. très utile. –