Capybara 请求规范与 JS 的问题 - 找不到模型

Posted

技术标签:

【中文标题】Capybara 请求规范与 JS 的问题 - 找不到模型【英文标题】:Issue with Capybara request specs with JS - can't find the model 【发布时间】:2012-05-28 08:40:29 【问题描述】:

我遇到了 JS 请求规范的问题 - 模型编辑页面的基本访问:

it "can edit a doc", :js => true do
  doc = FactoryGirl.create(:doc) # tried with Doc.create as well
  puts Doc.find(doc.id) # 1 <- so it's definitely in the DB!
  visit edit_doc_path(doc) 
end

结果:“ActiveRecord::RecordNotFound - 找不到 id=1 的文档”

奇怪的是它适用于标准请求规范。我尝试了 webkit 和 selenium 驱动程序。我的 spec_helper 看起来像这样(应该很标准):

RSpec.configure do |config|
  config.use_transactional_fixtures = false

  Capybara.javascript_driver = :webkit

  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end

  config.before(:each, :type => :request) do
    Capybara.reset_sessions!
  end
end

Rails 3.1.4,没有针对 capybara、rspec 等测试库的版本控制。

非常感谢任何输入!谢谢!

【问题讨论】:

如果你删除 js:true 会发生什么? 【参考方案1】:

好像你有同样的问题: Capybara with :js => true causes test to fail

尝试将 DatabaseCleaner 策略设置为 :truncation 看看是否有效

config.before(:suite) do
  DatabaseCleaner.strategy = :truncation
end

【讨论】:

以上是关于Capybara 请求规范与 JS 的问题 - 找不到模型的主要内容,如果未能解决你的问题,请参考以下文章

在 RSpec 请求规范中使用 Capybara 时设置自定义请求标头的最佳方法是啥?

Capybara-Webkit:缺少 js/React 并且找不到变量:WeakMap

如何在 rspec 中使用 capybara 点击下拉选项

Capybara 可以与 Turbolinks 一起玩吗?

更新到 Capybara 2.1.0.rc,现在我的功能规范中的 current_path 有问题

Capybara-webkit、rspec 集成规范和 xvfb:webkit_server:致命 IO 错误:客户端被杀死