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

-- 
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.

Reply via email to