Я пытаюсь написать интеграционные тесты с помощью rspec, factory_girl и capybara. У меня тоже установлен огурец, но я им не пользуюсь (насколько мне известно).
Я в основном хочу предварительно заполнить базу данных моим пользователем, а затем перейти на мою домашнюю страницу и попытаться войти в систему. Он должен перенаправить на user_path (@user).
Однако сеансы, похоже, не сохраняются в моих / rspec / requests / интеграционных тестах.
Моя спецификация: /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, он потерпит неудачу как объект nil.
Если я попытаюсь сделать это в тестах контроллера (/rspec/controllers/sessions_spec.rb), я смогу получить доступ к сеансу без проблем и могу вызвать сеанс [: user_id]