Dan Steinicke
2010-Jan-20 18:00 UTC
[rspec-users] [rails] undefined method `handling_predicate!''
I''m trying to use authlogic and factory_girl with rspec and I am getting an error I don''t understand. Basically I have this failing spec: it "should succeed in creating a user from a factory" do testuser = Factory.create(:user) debugger testuser.should be_valid end When I stop in the debugger I see this: (rdb:1) testuser.valid? true (rdb:1) testuser.should be_valid NoMethodError Exception: undefined method `handling_predicate!'' for #<Spec::Matchers::Be:0x25a9cac @args=[:be_valid]> My (limited) understanding of rSpec is that if the "testuser.valid?" works then "testuser.should be_valid" should work as well. I''m confused because its not working. Can someone help me understand what is going on here? I am using the following gem versions: rspec (1.3.0) rspec-rails (1.3.2) authlogic (2.1.3) factory_girl (1.2.3) rails (2.3.5) I have uninstalled/ reinstalled rspec, rspec-rails and rerun script/generate rspec letting it overwrite everything. Gist with full terminal output from running the spec and files: http://gist.github.com/282045 spec/models/user_spec.rb spec/spec_helper.rb spec/factories/users.rb thanks Dan Steinicke
David Chelimsky
2010-Jan-21 03:07 UTC
[rspec-users] [rails] undefined method `handling_predicate!''
On Wed, Jan 20, 2010 at 12:00 PM, Dan Steinicke <dansteinicke at gmail.com> wrote:> I''m trying to use authlogic and factory_girl with rspec ?and I am > getting an error I don''t understand. ?Basically I have this failing > spec: > > it "should succeed in creating a user from a factory" do > ? ? testuser = Factory.create(:user) > ? ? debugger > ? ? testuser.should be_valid > end > > When I stop in the debugger I see this: > > (rdb:1) testuser.valid? > true > (rdb:1) testuser.should be_valid > NoMethodError Exception: undefined method `handling_predicate!'' for > #<Spec::Matchers::Be:0x25a9cac @args=[:be_valid]> > > My (limited) understanding of rSpec is that if the "testuser.valid?" > works then "testuser.should be_valid" should work as well. ?I''m > confused because its not working. > > Can someone help me understand what is going on here? > > I am using the following gem versions: > rspec (1.3.0) > rspec-rails (1.3.2) > authlogic (2.1.3) > factory_girl (1.2.3) > rails (2.3.5) > > I have uninstalled/ reinstalled rspec, rspec-rails and rerun > script/generate rspec letting it overwrite everything. > > Gist with full terminal output from running the spec and files: > http://gist.github.com/282045 > spec/models/user_spec.rb > spec/spec_helper.rb > spec/factories/users.rb > > thanks > Dan SteinickeHey Dan, If you''re seeing that error it means you have an older version of rspec-rails than 1.3.2 that is being loaded. Try running the spec with --backtrace so you can see a full backtrace. Do you see any other versions being loaded? Maybe from vendor/plugins?
On Jan 20, 7:07?pm, David Chelimsky <dchelim... at gmail.com> wrote:> On Wed, Jan 20, 2010 at 12:00 PM, Dan Steinicke <dansteini... at gmail.com> wrote: > > I''m trying to use authlogic and factory_girl with rspec ?and I am > > getting an error I don''t understand. ?Basically I have this failing > > spec: > > > it "should succeed in creating a user from a factory" do > > ? ? testuser = Factory.create(:user) > > ? ? debugger > > ? ? testuser.should be_valid > > end > > > When I stop in the debugger I see this: > > > (rdb:1) testuser.valid? > > true > > (rdb:1) testuser.should be_valid > > NoMethodError Exception: undefined method `handling_predicate!'' for > > #<Spec::Matchers::Be:0x25a9cac @args=[:be_valid]> > > > My (limited) understanding of rSpec is that if the "testuser.valid?" > > works then "testuser.should be_valid" should work as well. ?I''m > > confused because its not working. > > > Can someone help me understand what is going on here? > > > I am using the following gem versions: > > rspec (1.3.0) > > rspec-rails (1.3.2) > > authlogic (2.1.3) > > factory_girl (1.2.3) > > rails (2.3.5) > > > I have uninstalled/ reinstalled rspec, rspec-rails and rerun > > script/generate rspec letting it overwrite everything. > > > Gist with full terminal output from running the spec and files: > >http://gist.github.com/282045 > > spec/models/user_spec.rb > > spec/spec_helper.rb > > spec/factories/users.rb > > > thanks > > Dan Steinicke > > Hey Dan, > > If you''re seeing that error it means you have an older version of > rspec-rails than 1.3.2 that is being loaded. Try running the spec with > --backtrace so you can see a full backtrace. Do you see any other > versions being loaded? Maybe from vendor/plugins? > _______________________________________________ > rspec-users mailing list > rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-usersDavid, That indeed was the problem. The gist from the original post shows the test run with --backtrace and it does show rspec-rails in vendor/ plugins (I didn''t see a version number tho). I did the following: rm -fr vendor/plugin/rspec-rails rm -fr vendor/plugin/rsecp sudo gem install rspec rspec-rails After which the spec no longer produces a NoMethodError and in fact passes. Thanks for taking the time to help me understand this, I was really stuck. Dan