Я пытаюсь обеспечить надлежащий доступ пользователей с помощью Devise в Rails 4, и мне трудно зарегистрировать пользователя в наборе тестов.
Самый простой случай:
require 'test_helper'
include Devise::TestHelpers
class SiteLayoutTest < ActionDispatch::IntegrationTest
def setup
@user = users(:test1)
end
test "logged in should get index" do
sign_in @user
get users_path
assert_response :success
assert_select "title", "User Index"
end
end
До сих пор я не сделал ничего, кроме реализации Devise и контроллера Users с соответствующими действиями.
Я постоянно получаю: NoMethodError: undefined method 'env' for nil:NilClass
, ссылаясь конкретно на строку, содержащую sign_in @user
, и я могу найти другие случаи, когда люди получают ту же ошибку, но никогда не находят фактического решения проблемы, которую я пытаюсь решить.
Как мне войти в систему с помощью Devise в Rails 4 для целей тестирования? Спасибо.
РЕДАКТИРОВАТЬ:
приспособления/users.yml
test1:
id: '1'
email: '[email protected]'
encrypted_password: <%= Devise::Encryptor.digest(User, "password") %>
created_at: <%= Time.now - 6.minutes %>
updated_at: <%= Time.now - 4.minutes %>
РЕШЕНИЕ НА МЕСТЕ:
test "logged in should get index" do
post user_session_path, 'user[email]' => @user.email, 'user[password]' => 'password'
get users_path
assert_response :success
assert_select "title", "User Index"
end
@user = User.find(1)
в настройках - person Amit Sharma   schedule 05.06.2015user:
внутриtest1:
, и поместите адрес электронной почты и пароль в ключ пользователя. - person Amit Sharma   schedule 05.06.2015NoMethodError: undefined method
env' для нуля: NilClass' - person spectre6000   schedule 05.06.2015