I’m new to rspec and, of course, my first time out and I’m tripped up by
what appears to me to be a bug.
A simple demonstration:
script/generate rspec_scaffold GoodDocument title:string body:text
From spec/views/good_documents/edit.html.erb_spec.rb:
before(:each) do
assigns[:good_document] = @good_document = stub_model(GoodDocument,
:new_record? => false,
:title => “value for title”,
:body => “value for body”
)
end
script/generate rspec_scaffold BadDocument some_id:integer title:string
body:text someother_id:integer
From spec/views/bad_documents/edit.html.erb_spec.rb:
before(:each) do
assigns[:bad_document] = @bad_document = stub_model(BadDocument,
:new_record? => false,
:title => “value for title”,
:body => “value for body”,
)
end
Notice how bad_documents/edit…'s stub_model is missing both the
:…_idfields and how the
:body field line is comma terminated. After chasing down the comma
(which
caused rspec test to fail with a syntax error) I found that using *
:…_identifier* will also trigger the problem. This only appears in
the
spec/views, spec/models have all attributes included in the *
@valid_attributes* hash.
So I think there are two problems here:
- field name which includes some undefined magic will be silently
untested
in the generated view specs - same name if it occupies the last slot in the record will cause the
test
to fail due to spec format
Rick