Hey guys,
I’m having a serious rspec-problem at the moment:
I keep getting strange, empty validation errors when I run the whole
spec-suite:
#################################################################
1)
ActiveRecord::RecordInvalid in ‘LikesController DELETE destroy’ should
change like-count’
Validation failed:
my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/
active_record/validations.rb:1090:in save_without_dirty!' my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/ active_record/dirty.rb:87:in
save_without_transactions!’
my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/
active_record/transactions.rb:200:in save!' my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/ active_record/connection_adapters/abstract/database_statements.rb: 136:in
transaction’
my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/
active_record/transactions.rb:182:in transaction' my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/ active_record/transactions.rb:200:in
save!’
my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/
active_record/transactions.rb:208:in rollback_active_record_state!' my_project/vendor/bundled_gems/gems/activerecord-2.3.5/lib/ active_record/transactions.rb:200:in
save!’
my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/
factory_girl/proxy/create.rb:6:in result' my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/ factory_girl/factory.rb:316:in
run’
my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/
factory_girl/factory.rb:260:in create' my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/ factory_girl/proxy/build.rb:17:in
associate’
my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/
factory_girl/attribute/association.rb:15:in add_to' my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/ factory_girl/factory.rb:313:in
run’
my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/
factory_girl/factory.rb:311:in each' my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/ factory_girl/factory.rb:311:in
run’
my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/
factory_girl/factory.rb:260:in create' my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/ factory_girl/factory.rb:291:in
send’
my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/
factory_girl/factory.rb:291:in default_strategy' my_project/vendor/bundled_gems/gems/factory_girl-1.2.3/lib/ factory_girl.rb:21:in
Factory’
./spec/controllers/likes_controller_spec.rb:46:
#################################################################
Here is the corresponding spec:
#################################################################
it “should change like-count” do
we_are_logged_in_as(get_member_user)
entry = Factory(:entry)
Factory(:like, :user => get_member_user, :entry => entry)
lambda do
post ‘destroy’, :entry_id => entry.id
end.should change(Like, :count).by(-1)
response.should be_success
end
#################################################################
Trouble-Shooting turns out to be difficult:
The spec itself seems to be correct, when running the spec-file alone
I don’t get any errors.
I only get this error when running the whole spec-suite - running the
single spec file is fine:
#################################################################
spec spec/controllers/likes_controller_spec.rb
Example disabled: should change like-count on success
…
Finished in 0.756284 seconds
3 examples, 0 failures
#################################################################
I have a lot of other specs failing in the very same way.
The errors itself are confusing - empty validation error messages are
utterly meaningless.
I suspect that there is something going wrong with all the stubbing /
mocking within in my specs.
To be concrete:
I suspect that something like:
Foo.any_instance.stubs(:bar).returns…
within a spec isn’t properly isolated from the other specs, thus
causing strange validation errors.
What do you guys think?
How could I narrow down this error further?
Sys-Info:
OS: Ubuntu 9.10
spec -v
rspec 1.3.0
Mocking / Stubbing: Mocha 0.9.8