[rspec-users] How to properly mock a complex object "comment.initiator.group.name"?

Pat Maddox pat.maddox at gmail.com
Wed Feb 25 05:35:48 EST 2009


On Wed, Feb 25, 2009 at 2:13 AM, Evgeny Bogdanov
<evgeny.bogdanov at gmail.com> wrote:
> I am wondering what is the best way to mock such expression:
> "comment.initiator.group.name"
>
> What I do now is:
> ===========================
> comment = mock_model(Comment)
> initiator = mock_model(User)
> group = mock_model(Group, :name => "Admin")
>
> initiator.stub!(:group).and_return(group)
> comment.stub!(:initiator).and_return(initiator)
> ===========================
> So it becomes quite complex when the length of the expression
> increases.
>
> Is it possible to do something like this:
> controller.stub!(:comment.initiator.group.name).and_return("Admin")?
>
> Thank you in advance!
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>

Fix the trainwreck.  An unimaginative solution would be
comment.initiator_group_name.  Try to find an intention- rather than
structure-revealing name.

Pat


More information about the rspec-users mailing list