javascript - 巫术/ capybara : Cannot log in with :js => true

标签 javascript ruby-on-rails capybara sorcery

我使用 capybara 已经有一段时间了,但我对巫术还是个新手。我有一个非常奇怪的问题,如果我在没有 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

在规范中这样调用:

feature "project setup" do
  include AuthenticationMacros

  background do
    sign_in
  end

  scenario "creating a project" do
    "my spec here"
  end

上面的代码工作正常。但是,如果我更改场景规范(在本例中)

scenario "adding questions to a project" do

scenario "adding questions to a project", :js => true do

登录失败,“用户名/密码不正确”组合。从字面上看,唯一的变化是 :js => true。我正在使用默认的 capybara javascript 驱动程序。 (加载 Firefox)

知道这里会发生什么吗?我完全被难住了。我使用的是 Capybara 2.0.1,Sorcery 0.7.13。登录页面上没有 javascript,在单击“登录”之前保存并打开页面确认在用户名/密码字段中输入了正确的详细信息。非常感谢任何建议 - 我不知所措。

最佳答案

根据 capybara 文档,默认的 capybara javascript 驱动程序是 Selenium。因为 Selenium 在单独的线程中执行,所以您必须禁用事务固定装置,否则 Selenium 线程将无法访问您在数据库中创建的数据。参见 https://github.com/jnicklas/capybara#using-capybara-with-testunit .该部分包含有关禁用事务固定装置的注释。

关于javascript - 巫术/ capybara : Cannot log in with :js => true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872947/

相关文章:

javascript - Highcharts 错误地插入编号的额外类别

javascript - 正则表达式 - 检测并替换字符串中两个以上的数字

ios - 使用 Alamofire 时出现 Heroku "Request Interrupted"错误

ruby-on-rails - 无法找到字段 "Email"Rspec

html - 使用 Rspec 和 Capybara 测试视频

javascript - 使用 jQuery.inArray 在数组中查找项目

javascript - 在 JavaScript 中转换以 10 为基数和以 255 为基数的整数字符串?

ruby-on-rails - visit 和 current_path 与 .should 在 rails 中的使用有什么区别?

javascript - Rails 3 - "link_to_function"方法的状态

ruby-on-rails - 字段 :published_on,:类型 => 日期;未在 MongoID + Devise 中显示