As far as my understanding goes (so, this is only an opinion, I
guess), it seems that the difference between Stub and Expect is one of
style, though there are instances when you might not neccesarily want
to stub anything, and therefore Expect would be the member of
choice ...

An example:


// Arrange
var aggregator = MockRepository.GenerateStub<IEventAggregator>();
var event = MockRepository.GenerateStub<MyEvent>();
aggregator.Stub(a=>a.GetEvent<MyEvent>()).Return(event); // we know
that this is going to be called, we want to check the correct value is
returned

// Act
var objectUnderTest = new MyTestableObject(aggregator);

// Assert
Assert.That(objectUnderTest.Event, Is.EqualTo(event));

* NOTE * This is really about me knowing the internal workings of
MyTestableObject -maybe this object actually needs re-factoring
because it seems that "stuff" happens in the constructor. Another way
of testing this exact same code would be ....

// Arrange
var aggregator = MockRepository.GenerateStub<IEventAggregator>();
var event = MockRepository.GenerateStub<MyEvent>();
aggregator.Expect(a=>a.GetEvent<MyEvent>().Return(event);   // we are
expecting that a.GetEvent<MyEvent>() will be called

// Act
var objectUnderTest = new MyTestableObject(aggregator);

// Assert
aggregator.VerifyAllExpectations();


On Dec 6, 10:05 pm, Fabien Arcellier <[email protected]>
wrote:
> Thanks for your reply. I understand all of it :)
>
> These exemples are taken from the documentation and convert to follow
> AAA 
> pattern.http://www.ayende.com/wiki/Rhino+Mocks+Method+Options+Interface.ashx
>
> I have taken this test because it is very easy to understand.
>
> I'd like to know the difference between to methods t.Stub<> and
> t.Expect<> associate with a Mock object.
>
> You only details the execution of stub method. What in the case of
> Expect method ?
> I got the same result in the two test (they pass)
>
> It's this point I try to clarify.
>
> Fabien
>
> On 6 déc, 21:43, bill richards <[email protected]> wrote:
>
>
>
> > AAA Syntax does not use Record()/Play()
>
> > // Arrange
> > var view = MockRepository.GenerateStub<IView>();
> > view.Stub(v => v.Ask(Arg<string>.IsAny, Arg<string>.IsAny)).Return
> > (null);
>
> > // Act
> > var result = view.Ask("1", null);
>
> > // Assert
> > Assert.That(result, Is.Null);
>
> > ... but, the only thing about this test is  .... it's only testing the
> > Mocking Framework (or is that the intention here?).
>
> > The test reads ...
>
> > // Arrange
> > Mocking framework generate a mock of the IView interface please.
> > Mocking framework, when I invoke IView.Ask(string, string), please pay
> > not attention to the values of the call, and give me a return value of
> > null
>
> > // Act.
> > Mocking framework, here's that method call I told you about
>
> > // Assert
> > Unit testing framework, please tell me if the Mocking framework gave
> > me a return value of null
>
> > On Dec 6, 9:25 pm, Fabien Arcellier <[email protected]>
> > wrote:
>
> > > Hello,
>
> > > I have rewritten every exemple in the documentation exemple by using
> > > AAA syntax (arrange, act, assert).
> > > There is one things I don't understand.
>
> > > What is the difference between the t.Stub<> and t.Expect<> ?
>
> > > According to the documentation comments in RhinoMocksExtention.cs,
> > > Stub doesn't create any expectation.
>
> > > What does it means ?
> > > Do you have an article to detail what is the expectation contest ?
>
> > > One exemple to illustrate my question with Expect :
>
> > >         [Test]
> > >         public void setReturnValueWhateverArguments_AAA()
> > >         {
> > >             //Assert
> > >             this.view.Replay();
> > >             this.view.Expect(v => v.Ask(null, null)).Return
> > > (null).IgnoreArguments();
>
> > >             //Act
> > >             object obj = this.view.Ask("1", null);
>
> > >             //Assert
> > >             Assert.AreEqual(null, obj);
> > >             this.view.VerifyAllExpectations();
> > >         }
>
> > > One exemple to illustrate my question with Stub:
>
> > >         [Test]
> > >         public void setReturnValueWhateverArguments_AAA()
> > >         {
> > >             //Assert
> > >             this.view.Replay();
> > >             this.view.Stub(v => v.Ask(null, null)).Return
> > > (null).IgnoreArguments();
>
> > >             //Act
> > >             object obj = this.view.Ask("1", null);
>
> > >             //Assert
> > >             Assert.AreEqual(null, obj);
> > >             this.view.VerifyAllExpectations();//I think this line is
> > > not important in this case
> > >         }
>
> > > Is there any difference on the interpretation ?
>
> > > Do you have any article about this topic ?
>
> > > Regards,
> > > Fabien Arcellier- Hide quoted text -
>
> - Show quoted text -

--

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