Skip to content

Instantly share code, notes, and snippets.

@crmckenzie
Last active December 11, 2015 17:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save crmckenzie/4632765 to your computer and use it in GitHub Desktop.
Save crmckenzie/4632765 to your computer and use it in GitHub Desktop.
Recursive Mocks Sample
public interface IMapper
{
IMapperLink From<TInput>(TInput input);
}
public interface IMapperLink
{
TOutput To<TOutput>();
}
[Test]
public void BeforeRhinoMocksRecursiveMocks()
{
var mapper = MockRepository.GenerateMock<IMapper>();
var mapperLink = MockRepository.GenerateMock<IMapperLink>();
mapper.Expect(mock => mock.From(5)).Return(mapperLink);
mapperLink.Expect(mock => mock.To<string>()).Return("Test");
var result = mapper.From(5).To<string>();
Assert.That(result, Is.EqualTo("Test"));
}
[Test]
public void UsingRhinoMocksRecursiveMocks()
{
var mapper = MockRepository.GenerateMock<IMapper>();
mapper.Expect(mock => mock.From(5).To<string>()).Return("Test");
var result = mapper.From(5).To<string>();
Assert.That(result, Is.EqualTo("Test"));
}
[Test]
public void UsingNSubstituteRecursiveMocks()
{
var mapper = Substitute.For<IMapper>();
mapper.From(5).To<string>().Returns("Test");
var result = mapper.From(5).To<string>();
Assert.That(result, Is.EqualTo("Test"));
}
[Test]
public void UsingNSubstituteWithMultipleRecursiveMocks()
{
var mapper = Substitute.For<IConverterApi>();
mapper.From(5).To<string>().Returns("Test");
mapper.From("Seven").To<double>().Returns(7.0);
var firstResult = mapper.From(5).To<string>();
Assert.That(firstResult, Is.EqualTo("Test"));
var secondResult = mapper.From("Seven").To<double>();
Assert.That(secondResult, Is.EqualTo(7.0));
}
[Test]
public void UsingRhinoMocksWithMultipleRecursiveMocks()
{
var mapper = MockRepository.GenerateMock<IConverterApi>();
mapper.Expect(mock => mock.From(5).To<string>()).Return("Test");
// This test fails here.
mapper.Expect(mock => mock.From("Seven").To<double>()).Return(7.0);
var firstResult = mapper.From(5).To<string>();
Assert.That(firstResult, Is.EqualTo("Test"));
var secondResult = mapper.From("Seven").To<double>();
Assert.That(secondResult, Is.EqualTo(7.0));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment