Sorry I spoke too soon, since there is a setter on Document you can just do:
fakeHeader.AuditingRequired = false (of course you have to heed Alex's advice of make method/properties virtual) On Thu, Feb 4, 2010 at 6:56 AM, Tim Barcz <[email protected]> wrote: > Also if you're using Rhino Mocks 3.5 instead of: > > > SetupResult.For(fakeHeader.AuditingRequired).Return(false); > > use > > fakeHeader.Stub(x=>x.AuditingRequired).Return(false) > > > On Thu, Feb 4, 2010 at 3:39 AM, Alex McMahon <[email protected]> wrote: > >> First I'd suggest using interfaces... secondly if you are mocking a class >> the mocked methods/properties must be marked as virtual, which is pretty >> much what the error message has said. >> >> >> On 4 February 2010 07:02, TheMightyKumquat <[email protected]> wrote: >> >>> This shouldn't be causing problems, but somehow it is. Possibly it's >>> related to my inexperience using stubs, or possibly it's that I'm >>> trying to stub a class. >>> >>> class MyDocument{ >>> >>> public DocumentHeader Header { get; set; } >>> >>> //... >>> } >>> >>> class DocumentHeader{ >>> >>> public bool AuditingRequired { get; set; } >>> //... >>> } >>> >>> class ClassBeingTested { >>> public void HandleAudit(MyDocument doc) >>> { >>> if (doc.Header.AuditingRequired) >>> { >>> // do things >>> } >>> } >>> } >>> >>> I'm testing the HandleAudit method, and the scenario tested is that >>> AuditingRequired is false. >>> I: >>> - set up a MyDocument object with a DocumentHeader property, >>> - set up the value false for its AuditingRequired property to return >>> and >>> - feed those stubbed values into the method. >>> >>> But I'm trying to stub the MyDocument and the DocumentHeader classes, >>> and I can't seem to set them up properly. >>> >>> [TestMethod] >>> public void MyTest() >>> { >>> //ARRANGE >>> ClassBeingTested target = new ClassBeingTested(); >>> >>> // This works >>> MyDocument fakeMyDoc= >>> MockRepository.GenerateStub<MyDocument>(); >>> HeaderDocument fakeHeader = >>> MockRepository.GenerateStub<DocumentHeader>(); >>> >>> // This throws an exception >>> >>> SetupResult.For(fakeHeader.AuditingRequired).Return(false); >>> >>> SetupResult.For(fakeResponse.HeaderDocument).Return(fakeHeader); >>> >>> //ACT >>> target.HendleAudit() >>> >>> // ASSERT >>> .... >>> } >>> >>> My test throws an exception at the SetupResult lines - >>> System.InvalidOperationException: Invalid call, the >>> last call has been used or no call has been made (make sure that you >>> are calling a virtual (C#) / Overridable (VB) method).. >>> >>> I can't see what I'm doing wrong - any ideas, please? >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Rhino.Mocks" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]<rhinomocks%[email protected]> >>> . >>> For more options, visit this group at >>> http://groups.google.com/group/rhinomocks?hl=en. >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Rhino.Mocks" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<rhinomocks%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/rhinomocks?hl=en. >> > > > > -- > Tim Barcz > Microsoft C# MVP > Microsoft ASPInsider > http://timbarcz.devlicio.us > http://www.twitter.com/timbarcz > > -- Tim Barcz Microsoft C# MVP Microsoft ASPInsider http://timbarcz.devlicio.us http://www.twitter.com/timbarcz -- You received this message because you are subscribed to the Google Groups "Rhino.Mocks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rhinomocks?hl=en.
