Я пытаюсь написать интеграционные тесты с помощью rspec, factory_girl & capybara. У меня также установлен огурец, но я им не пользуюсь (насколько мне известно).
Я в основном хочу предварительно заполнить базу данных моим пользователем, затем перейти на мою домашнюю страницу и попытаться войти в систему. Он должен перенаправить на user_path (@user).
Однако сеансы, похоже, не сохраняются в моих / rspec / запросы / интеграционных тестах.
Моя спецификация: /rspec/requests/users_spec.rb
require 'spec_helper'
describe "User flow" do
before(:each) do
@user = Factory(:user)
end
it "should login user" do
visit("/index")
fill_in :email, :with => @user.email
fill_in :password, :with => @user.password
click_button "Login"
assert current_path == user_path(@user)
end
end
Возвращает:
Failures:
1) User flow should login user
Failure/Error: assert current_path == user_path(@user)
<false> is not true.
# (eval):2:in `send'
# (eval):2:in `assert'
# ./spec/requests/users_spec.rb:16
Вместо этого он перенаправляет на мой please_login_path - что должно произойти, если по какой-либо причине произойдет сбой входа (или если сессия [: user_id] не установлена).
Если я попытаюсь поместить session.inspect, он потерпит неудачу как нулевой объект.
Если я попытаюсь сделать это в тестах контроллера (/rspec/controllers/sessions_spec.rb), я могу без проблем получить доступ к сеансу и вызвать сессию [: user_id]