Rails model association collections allow you to do nifty things like:

  article.comments.find(:all, :conditions => {:created_at > 1.day.ago})

Has anyone found a good way to mock this up? I'm currently doing this:

  @comment1 = mock_model(Comment)
  comments = mock(Array)
  comments.stub!(:find).and_return([EMAIL PROTECTED])

  @article = mock_model(Article)
  @article.stub!(:comments).and_return(comments)

I don't like this, because of that intermediate 'comments' object, whose 
only purpose is so that i can stub the chained method. I'd like to do 
something like this:

  @comment1 = mock_model(Comment)

  @article = mock_model(Article, :comments => mock(Array, :find => 
[EMAIL PROTECTED]))

But trying this causes an error: "Mock 'Array' received unexpected 
message :find with (:all, ...)" because you can't inline stubs with 
ordinary `mock`. I can replace it with `mock_model`, but this feels unclean.

Has anyone come across a good 'best-practice' solution to this problem?

TIA,
Paul Sadauskas

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to