Я пытаюсь протестировать некоторые действия контроллера Rails, требующие входа в систему. Прямо сейчас вход в систему управляется установкой зарегистрированного пользователя на session[:user_id]
, что все работает, как ожидалось, но когда я пытаюсь вручную установить его в своем тесте (определенно открыта для лучшего способа!), Я получаю NoMethodError: undefined method
session 'для nil: NilClass`, что действительно сбивает с толку. сообщение в первую очередь - я ожидал бы NameError для неопределенной переменной. Я хотел бы протестировать методы как с входом, так и без входа, поэтому я не уверен, что вход в систему на этапе настройки является точным (хотя я все равно не мог заставить его работать), но я открыт для любых предложений . Это для урока по тестированию, поэтому я хочу оставить его базовым c и , пожалуйста, укажите, если я здесь делаю что-то супер неправильное, прежде чем научу этому впечатлительную молодежь.
require 'test_helper'
class TacosControllerTest < ActionDispatch::IntegrationTest
setup do
@meat = tacos(:meat)
@veggie = tacos(:veggie)
end
test "should redirect if not logged in" do
get new_taco_url
assert_redirected_to login_path
end
test "should get new if logged in" do
session[:user_id] = users(:pat).id
get new_taco_url
assert_response :success
end
test "should create new taco" do
session[:user_id] = users(:pat).id
assert_difference("Taco.count") do
post tacos_url, params: {taco: {name: "Yummy", price: 2.50}}
end
end
end