This is one reason I personally dislike this style of specs combined with AR hooks. It makes more difficult than necessary to troubleshoot.
As @javix pointed out, line 20 <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L20> has: it { should be_valid } At this point the subject is what is defined on line 11 <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L11> : subject { @user } The ivar @user is defined in the before block on line 5 <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L5-L9> : before do @user = User.new(name: "Example User", email: "[email protected]", password: "foobar", password_confirmation: "foobar") end However, when the spec on line 91 <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L91> runs it calls save in the before block on line 87 <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L87> : before { @user.save } By using save! it raises an error and confirms that the model was invalid. Here's the error: Failure/Error: before { @user.save! } ActiveRecord::RecordInvalid: Validation failed: Password confirmation doesn't match Password Dumping the attributes of @user shows there is a mismatch in the password: { password: "foobar", password_confirmation: "mismatch", } This is happening because there is an additional before hook that runs defined on line 87 <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L78>. On a visual inspection, it doesn't appear that it is initially related because the indenting is out of sync. The end on line 84 really applies to the describe on line 81. On Tue, Jul 22, 2014 at 10:13 AM, Javix <[email protected]> wrote: > > > On Tuesday, July 22, 2014 8:23:07 AM UTC+2, Roelof Wobben wrote: >> >> Hello, >> >> I do still follow the Hartl tutorial. >> Am at chapter 6 and according to the manual the test schould be >> successfull but I see these error messages: >> >> Failures: >> >> >> >> >> >> >> >> 1) User when password doesn't match confirmation return >> value of authenticate method with valid password >> >> >> Failure/Error: it { should eq found_user. >> authenticate(@user.password) } >> >> >> >> NoMethodError: >> >> >> >> undefined method `authenticate' for nil:NilClass >> >> >> >> # ./spec/models/user_spec.rb:91:in `block (5 >> levels) in <top (required)>' >> >> You can find my code here : https://github.com/roelof1967/ >> sample_app_nutrious/tree/chapter_six >> >> Roelof >> > > @Aaron: as of his gemfile he uses 4.1.4. I don't think save! could solve > that because the previous example pass (line 20): > > it { should be_valid } > > The problem is that he is callilng authenticate on Nil. > > -- > You received this message because you are subscribed to the Google Groups > "rspec" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/09a1007d-9811-4548-80f9-e5b0f3f33a17%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/09a1007d-9811-4548-80f9-e5b0f3f33a17%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "rspec" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rspec/CAKCESdi5aX6_4_8Fguvd0WNA3K%3DrCZy622EoiTHz9G6kK%2BAG%2BA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
