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