The book "The Art of Unit Testing" by Roy Osherove mentions that "a fake
object should either be used as a mock or as a stub, not both".

What do you think about that? Does that mean my object is trying to do too
many things at once?

Ray

On Wed, Jun 13, 2012 at 5:51 AM, Patrick Steele <[email protected]>wrote:

> I think it would be easier to use the new AAA (Arrange/Act/Assert)
> syntax.  Something like this:
>
> var mockBoard = MockRepository.GenerateStub<IBoard>();
>
> // arrange
> mockBoard.Stub(b => b.Position(6,6)).Returns(StoneColor.Black);
> mockBoard.Stub(b => b.Position(5,6)).Returns(StoneColor.White);
> mockBoard.Stub(b => b.Position(6,5)).Returns(StoneColor.White);
> mockBoard.Stub(b => b.Position(7,6)).Returns(StoneColor.White);
>
> // act
> Gameplay gameplay = new Gameplay(mockBoard, Player.White);
> gameplay.PlayerMove(Player.White, 6, 7);
>
> // assert
> mockBoard.AssertWasCalled(b => b.RemoveStone(6,6));
>
> ---
> Patrick Steele
> http://weblogs.asp.net/psteele
>
>
> On Tue, Jun 12, 2012 at 2:34 AM, R8Lm <[email protected]> wrote:
> > Hello, I am trying to write a Go Game. I am new to Rhino Mocks and
> > trying to TDD with it.
> >
> > Here is a test I am trying to write (in nunit c#):
> >
> > public void Gameplay_PlayerMove_SurroundAnEnemyStoneShouldRemoveIt()
> >        {
> >            MockRepository mocks = new MockRepository();
> >            IBoard mockBoard = mocks.DynamicMock<IBoard>();
> >
> >            using (mocks.Record())
> >            {
> >                mockBoard.Position(6, 6);
> >                LastCall.Return<StoneColor>(StoneColor.Black);
> >
> >                mockBoard.Position(5, 6);
> >                LastCall.Return<StoneColor>(StoneColor.White);
> >
> >                mockBoard.Position(6, 5);
> >                LastCall.Return<StoneColor>(StoneColor.White);
> >
> >                mockBoard.Position(7, 6);
> >                LastCall.Return<StoneColor>(StoneColor.White);
> >
> >                mockBoard.AddStone(StoneColor.White, 6, 7);
> >
> >                mockBoard.RemoveStone(6, 6);
> >            }
> >
> >            Gameplay gameplay = new Gameplay(mockBoard, Player.White);
> >            gameplay.PlayerMove(Player.White, 6, 7);
> >
> >            mockBoard.VerifyAllExpectations();
> >
> >        }
> >
> > The problem I am having is I want the calls to mockBoard.Position(x,y)
> > to be optional. The only method I want to verify is
> > mockBoard.RemoveStone(x,y)
> > How can I get that behavior?
> >
> > So my mockBoard is kind of a mix of a stub and a mock.
> >
> > I heard though, that it is bad to combine stubs and mocks in one
> > object. If so, how would people prefer to write this test? Is there a
> > better way to implement my objects?
> >
> >
> > --
> > 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.
> >
>
> --
> 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.
>
>

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