法术/水豚:无法登录:js => true

Pla*_*Ton 5 javascript ruby-on-rails capybara sorcery

我已经使用了水豚一段时间,但我是巫术的新手.我有一个非常奇怪的问题,如果我在没有Capybara的情况下运行规范:js => true功能我可以正常登录,但是如果我尝试在规范中指定:js => true,则无法找到用户名/密码.

这是身份验证宏:

module AuthenticationMacros
  def sign_in
    user = FactoryGirl.create(:user)
    user.activate!
    visit new_sessions_path
    fill_in 'Email Address', :with => user.email
    fill_in 'Password', :with => 'foobar'
    click_button 'Sign In'
    user
  end
end
Run Code Online (Sandbox Code Playgroud)

在这样的规格中称为:

feature "project setup" do
  include AuthenticationMacros

  background do
    sign_in
  end

  scenario "creating a project" do
    "my spec here"
  end
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.但是,如果我改变了场景规范(在这种情况下)

scenario "adding questions to a project" do
Run Code Online (Sandbox Code Playgroud)

scenario "adding questions to a project", :js => true do
Run Code Online (Sandbox Code Playgroud)

登录失败,并出现"用户名/密码错误"组合.字面上唯一的变化是:js => true.我正在使用默认的capybara javascript驱动程序.(加载Firefox)

有什么想法可以在这里发生什么?我完全难过了.我正在使用Capybara 2.0.1,Sorcery 0.7.13.登录页面上没有javascript,在点击"登录"之前save_and_open_page确认在用户名/密码字段中输入了正确的详细信息.任何建议真的很感激 - 我很茫然.

cba*_*com 8

根据capybara doc,默认的capybara javascript驱动程序是Selenium.由于Selenium在单独的线程中执行,因此您必须禁用事务夹具,否则Selenium线程将无法访问您在数据库中创建的数据.请参阅https://github.com/jnicklas/capybara#using-capybara-with-testunit.该部分有关于禁用事务性装置的这些注释.