[rspec-users] Strange validation errors

jollyroger timo.roessner at googlemail.com
Thu Mar 18 06:15:40 EDT 2010


Hey David,

I experienced similar problems as depicted above in other projects now
as well.
E.g. a wrong-used stub in an it-block overwrote stubs established in
helper functions for the whole spec-file etc.
This was a mocha-related problem, I know that for sure cause when I
swapped out mocha for rspec-stubbing everything behaved as expected.
I now switched from mocha to rspec-stubbing / mocking, and so far,
works like a charm - thanks for your time and help.

On Mar 15, 1:40 pm, David Chelimsky <dchelim... at gmail.com> wrote:
> On Mon, Mar 15, 2010 at 6:54 AM, jollyroger
>
>
>
> <timo.roess... at googlemail.com> wrote:
> > 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
>
> Take a look at this thread and see if it helps:
>
> http://groups.google.com/group/mocha-developer/browse_thread/thread/5...
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list