On 19 Feb 2009, at 20:54, Martin wrote:

Hi,

I'm trying to test my views using rspec. I want to test my edit- and new-view also for the case an error occurs (something like "title can't be blank" and so on). Can someone point me please to an example where I can see how to mock my model and stub all methods needed for the view?

I guess this isn't exactly what you want to hear, but I would counsel you against mocking your whole model object for a form with lots of fields - those kind of 'broad' mocks can be very brittle to changes in your domain model.

Can you try using stub_model instead? This creates an instance of your actual model class, but with a crippled database connection. You can then create an invalid model object and throw it to the view. Something like:

assigns[:book] = stub_model(Book, :title => '')

If your model is at all interesting, you might want to keep the attributes that make a valid Book somewhere:

valid_book = {
  :title => "Test Book Title",
  :author => "Test Author"
}
assigns[:book] = stub_model(Book, valid_book.merge(:title => ''))

I generally hide these behind a helper method, like

def stub_book(attributes = {})
  stub_model Book, {
    :title => "Test Book Title",
    :author => "Test Author"
  }.merge(attributes)
end

Does that help?

Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com

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

Reply via email to