NoMethodError с интеграционным тестом, RailsTutorial Ch9 - PullRequest
0 голосов
/ 03 июня 2018

У меня проблема с тем, что мои интеграционные тесты, похоже, не находят метод log_in_as из моего test_helper.rb

Я следовал учебному пособию Майкла Харта по Rails, поэтому я надеялся не проводить массовый рефакторинг своегокод, чтобы попытаться заставить это работать.Я хотел бы продолжить чтение книги, не исключая тесты, поскольку это довольно сложный тест.

Ошибка:

UsersLoginTest#test_login_with_remembering:
NoMethodError: undefined method `log_in_as' for #<UsersLoginTest:0x00000005b18460>
    test/integration/users_login_test.rb:43:in `block in <class:UsersLoginTest>'

User_login_test.rb:

require 'test_helper.rb'

class UsersLoginTest < ActionDispatch::IntegrationTest

.
.
.

  test "login with remembering" do
    log_in_as(@user, remember_me: '1')
    assert_not_empty cookies['remember_token']
  end

  test "login without remembering" do
    # Log in to set the cookie.
    log_in_as(@user, remember_me: '1')
    # Log in again and verify that the cookie is deleted.
    log_in_as(@user, remember_me: '0')
    assert_empty cookies['remember_token']
  end
end

test_helper.rb:

ENV['RAILS_ENV'] ||= 'test'

class ActiveSupport::TestCase
  fixtures :all

  # Returns true if a test user is logged in.
  def is_logged_in?
    !session[:user_id].nil?
  end

  # Log in as a particular user.
  def log_in_as(user)
    session[:user_id] = user.id
  end
end

class ActionDispatch::IntegrationTest

  # Log in as a particular user.
  def log_in_as(user, password: 'password', remember_me: '1')
    post login_path, params: { session: { email: user.email,
                                          password: password,
                                          remember_me: remember_me } }
  end
end

1 Ответ

0 голосов
/ 16 января 2019

У меня была такая же проблема.Мне пришлось решить две проблемы:

  1. Убедитесь, что есть только один файл test_helper.rb, а
  2. test_helper.rb находится в нужной папке

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...