我一直试图让我的请求规范工作。我尝试了许多通过 Google 和 SO 找到的不同方法。以下是我在请求规范中单独尝试过的以下助手:
#spec/support/devise_request_spec_support.rb
module DeviseRequestSpecSupport
def login(user)
post user_session_path, login: user.email, password: 'foobar'
end
end
#spec/support/utilities.rb
include ApplicationHelper
def valid_login(user)
fill_in "user[email]", with: user.email
fill_in "user[password]", with: 'foobar'
click_button "Sign in"
end
def login(user)
visit root_path
valid_login(user)
end
我在#login
下面的请求规范中分别尝试了上述两种方法:
require 'spec_helper'
describe "Company Admin Dashboard", js: true do
let(:user) { Fabricate(:company_admin) }
before do
login(user)
poll = Fabricate(:poll)
poll.send_to_all_users
end
describe "interacting with the poll box" do
it "displays sent poll in poll box" do
visit root_path
end
end
end
测试将通过,但 root_path 不显示登录用户的登录页面。它显示了公共登录页面。我尝试使用 binding.pry 进行调试并尝试在测试环境中手动登录,但我不断收到“无效的电子邮件或密码”错误。我检查了很多次,但我一直在使用 Fabricated company_admin 的正确电子邮件和密码。
我也尝试过这里提出的解决方案:https ://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
任何帮助将不胜感激。不确定问题出在哪里。是 Fabrication gem、Devise、RSpec 还是 Capybara?