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:
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
You’re calling method authenticate nil. You need to look at your call to
authenticate, and figure out why the object is nil. (This could easily
be caused by a simple typo. Check variable names carefully.)
I checked and double checked it but it looks allright to me.
I even copy/paste it to my files but still no luck.
The problem must be somewhere here:
describe “with a password that’s too short” do
before { @user.password = @user.password_confirmation = “a” * 5 }
it { should be_invalid }
end
describe “return value of authenticate method” do
before { @user.save }
let(:found_user) { User.find_by(email: @user.email) }
describe "with valid password" do
it { should eq found_user.authenticate(@user.password) }
end
describe "with invalid password" do
let(:user_for_invalid_password) {
found_user.authenticate(“invalid”) }
it { should_not eq user_for_invalid_password }
specify { expect(user_for_invalid_password).to be_false }
end
end
end
Roelof
Op maandag 21 juli 2014 18:43:04 UTC+2 schreef Eric S.:
it { should be_invalid }
describe "with invalid password" do
let(:user_for_invalid_password) { found_user.authenticate("invalid") }
it { should_not eq user_for_invalid_password }
specify { expect(user_for_invalid_password).to be_false }
end
end
end
So… You really can’t figure out any reason why found_user would be
nil? (Actually, there’s lots here that looks suspect. But one step at a
time, focus on your current problem.)