Search code examples
ruby-on-railsrailstutorial.orgnomethoderror

rails NoMethodError: undefined method " " for nil:NilClass


I am working on rails tutorial by Michael Hartl's (chapter 9).

I get this error:

 Error:
UsersLoginTest#test_login_with_remembering:
NoMethodError: undefined method `FILL_IN' for nil:NilClass
    test/integration/users_login_test.rb:42:in `block in <class:UsersLoginTest>'

FILL-IN was added in chapter 8 and there wasn't any problem till chapter 9. I tried a lot but I can't fix it. Here is my UsersLoginTest class.

class UsersLoginTest < ActionDispatch::IntegrationTest

  def setup
    @user = users(:michael)
  end

  test "login with invalid information" do
    get login_path
    assert_template 'sessions/new'
    post login_path, session: { email: "", password: "" }
    assert_template 'sessions/new'
    assert_not flash.empty?
    get root_path
    assert flash.empty?
  end

  test "login with valid information followed by logout" do
       get login_path
    post login_path, session: { email: @user.email, password: 'password' }
    assert is_logged_in?
    assert_redirected_to @user
    follow_redirect!
    assert_template 'users/show'
    assert_select "a[href=?]", login_path, count: 0
    assert_select "a[href=?]", logout_path
    assert_select "a[href=?]", user_path(@user)
    delete logout_path
    assert_not is_logged_in?
    assert_redirected_to root_url
    # Simulate a user clicking logout in a second window.
    delete logout_path
    follow_redirect!
    assert_select "a[href=?]", login_path
    assert_select "a[href=?]", logout_path,      count: 0
    assert_select "a[href=?]", user_path(@user), count: 0
  end

  test "login with remembering" do
    log_in_as(@user, remember_me: '1')
    assert_equal assigns(:user).FILL_IN, FILL_IN
  end

  test "login without remembering" do
    log_in_as(@user, remember_me: '0')
    assert_nil cookies['remember_token']
  end
end

Line 42 is:

assert_equal assigns(:user).FILL_IN,FILL_IN

Solution

  • FILL_IN in this case is a placeholder. Michael expects you to replace this with the correct text.