Convert to Arrange, Action, Assert
I am studying RhinoMocks, the new Arrange/Action/Assert style is more concise than the Record/Replay. Compare the style below
public void Analyze_WebServiceThrows_SendsEmail() { MockRepository mocks = new MockRepository(); IWebService stubService = mocks.Stub(); IEmailService mockEmail = mocks.CreateMock (); using (mocks.Record()) { stubService.LogError("whatever"); LastCall.Constraints(Is.Anything()); LastCall.Throw(new Exception("fake exception")); mockEmail.SendEmail("a", "subject", "fake exception"); } LogAnalyzer2 log = new LogAnalyzer2(); log.Service = stubService; log.Email = mockEmail; string tooShortFileName = "abc.ext"; log.Analyze(tooShortFileName); mocks.VerifyAll(); } [Test] public void Analyze_WebServiceThrows_SendsEmail_aaa() { //arrange var webServiceStub = MockRepository.GenerateStub (); var emailMock = MockRepository.GenerateStub (); webServiceStub.Stub ( x => x.LogError("whatever")) .Constraints(Is.Anything()) .Throw(new Exception("fake exception") ); //act new LogAnalyzer2() { Email = emailMock, Service = webServiceStub }.Analyze("abc.ext"); //assert emailMock.AssertWasCalled(x => x.SendEmail("a", "subject", "fake exception")); } </pre>