Ale, music and enjoying life.
What follows is simply a few rough notes I made with experience with a Moq framework and converting to Rhino Mocks:
ISomethingRepository mockedSomethingRepository = MockRepository.GenerateMock(); var person = new Person { name = "Bob" }; // Act var something = new Something(mockedSomethingReporsitory); // Assert mockedSomethingRepository.AssertWasCalled(x => x.Save(person));
As above but assert on the property….
mockedSomethingRepository.AssertWasCalled(x => x.WasPersonSaved = true);
Similar to Setup with Moq we’d use a Stub to return the desired flow i.e:
ISomethingRepository mockedSomethingRepository = MockRepository.GenerateMock(); mockedSomethingRepository.Stub(x => x.ValidatePerson(Arg.Is.Anything)).Return(true));
ISomethingRepository mockedSomethingRepository = MockRepository.GenerateMock(); mockedSomethingRepository.Stub(x => x.IsValid).Return(true));
You can use GenerateStub here but the above setup for the stub keeps things syntactically the same in all mock setup instances.
In the first example we simply checked that a method was called. If we wanted to check the method was called passing in an object with specific properties we would do the following:
var personId = 23; mockedSomethingRepository.AssertWasCalled(x => x.Save(Arg.Matches(x => x.Id == personId));
Check out some of my other Mocking tips and tricks….