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.

Reply via email to