Как я могу смоделировать вход в сеанс для тестирования методов контроллера Rails? - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь протестировать некоторые действия контроллера 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...