In Rhino I can do this:
[Fact]
public void Rhino_RecursiveMocks()
{
var monkey = MockRepository.GenerateMock<IMonkey>();
monkey.Expect(m => m.Name).PropertyBehavior();
monkey.Name = "Spike";
monkey.Expect(m => m.Keeper().AssignedMonkey).Return(monkey);
Assert.NotNull(monkey.Keeper());
Assert.Equal("Spike", monkey.Keeper().AssignedMonkey.Name);
}
But the following in NSub doesn't work
[Fact]
public void NSubstitute_RecursiveMocks()
{
var monkey = Substitute.For<IMonkey>();
monkey.Keeper().AssignedMonkey.Returns(monkey);
monkey.Name = "Spike";
Assert.NotNull(monkey.Keeper());
Assert.Equal("Spike",monkey.Keeper().AssignedMonkey.Name);
}
Relevant code for mocks is:
public interface IMonkey
{
string Name { get; set; }
IZooKeeper Keeper();
}
public interface IZooKeeper
{
IMonkey AssignedMonkey { get; set; }
}
--
- Richard Banks (@rbanks54)
blog:
http://www.richard-banks.orgpodcast:
http://www.talkingshopdownunder.com