当前位置: 首页 > 知识库问答 >
问题:

水豚恶作剧与数据库清洁工没有找到FactoryGirl记录

魏誉
2023-03-14

我正在用FactoryGirl编写集成测试并创建记录。当测试有js:true(带Poltergeist)时,我的控制器会抛出RecordNotFound,即使它们是在非js测试(不带Poltergeist)中找到的。

我确实将use\u transactional\u fixture设置为falseDatabaseCleaner。策略设置为:截断,似乎涵盖了这个问题上的所有现有SO问题。我尝试用Selenium(用Firefox)代替Poltergeist,但得到了相同的结果。ETA I使用RSpec Rails 3.3.3、Capybara 2.4.4、Poltergeist 1.6.0、PhantomJS 1.9.8、Database Cleaner 1.4.1启动了一个全新的Rails 4.2.3项目,并在测试新的未经编辑的脚手架时获得了相同的结果。

为什么我的记录没有被恶鬼找到?任何建议都会有帮助,因为我已经做了好几个小时了。

前两个测试通过,而最后一个测试在第二行中失败,RecordNotField

require 'spec_helper'

before :each do
  @vehicle = FactoryGirl.create :vehicle
end

it "should work on vehicle path" do
  visit vehicle_path(@vehicle)
  expect(page).to have_content @vehicle.name
end

describe "with js", js: true do
  it "should work on root path" do
    visit root_path
    expect(page).to have_content "My Root"
  end

  it "should work on vehicle path" do
    expect(Vehicle.find(@vehicle.to_param)).to be_present # no error
    visit vehicle_path(@vehicle) # error: ActiveRecord::RecordNotFound in controller from Vehicle.find (same as above line)
    expect(page).to have_content @vehicle.name
  end
end

这是我的精简规格助手。rb:

require 'rubygems'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'factory_girl_rails'
require 'database_cleaner'
require 'capybara/rails'
require 'capybara/rspec'
require 'capybara/poltergeist' 

ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new app, window_size: [1600, 1200], js_errors: false
end

RSpec.configure do |config|
  config.use_transactional_fixtures = false
  config.order = "random"

  Capybara.javascript_driver = :poltergeist
  config.include Capybara::DSL

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation) # moving to before :each doesn't help
    DatabaseCleaner.strategy = :truncation # moving to before :each doesn't help
  end

  config.around :each do |example| # refactoring as before/after with .start/.clean doesn't help
    DatabaseCleaner.cleaning { example.run }
  end
end

共有1个答案

仉昂熙
2023-03-14

我创建了一个新的项目,基本上复制了您的设置,它似乎工作得很好--您可以在这里看到-http://github.com/twalpole/demo_truncation-不确定您的设置和尝试新应用的区别是什么

 类似资料:
  • 我正在使用factory girl和capybara的minitest进行集成测试。当我不使用factory girl创建用户对象时,Capybara工作正常,如下所示: 但是一旦我尝试用工厂女孩创建一个用户,奇怪的事情就开始发生,比如访问方法和click_button方法停止工作。例如,这个测试似乎没有任何问题: 这是我的factories.rb: 下面是我得到的实际错误: 但是,如果我删除了u

  • 问题内容: 我正在尝试向API进行身份验证,该API仅允许您使用带有JSON的POST作为表单数据进行身份验证,格式为{“ username”:“ myusername”,“ password”:“ mypassword”}。 我已经尝试了两天,以使其与jQuery一起使用,但是由于它是跨域的,所以我遇到了问题。我该怎么做? 错误信息: 到目前为止的代码: 总结一下: API仅接受POST进行身份

  • 我是cucumber和水豚的新手,我对以下错误感到困惑: 在我的功能中,我有: 我的步骤如下所示: 我尝试了“click(button\u text)和click\u link”方法。我想这可能是我没有看到的明显的东西。我试图找到按钮元素的css定位器,然后单击该元素。我认为regex不需要更改,因为我正在更改“button\u text”局部变量的内容。还是我?

  • 问题内容: 我有没有节点的Jenkins安装程序,所有构建都在同一台机器上运行。我想设置一个Groovy脚本来清理旧的工作区,所以我想使用: 当掌握时,我应该赋予什么价值? 问题答案: 执行以下脚本,使用清理所有Jenkins工作区:

  • 我正在根据一个主要开发人员的请求编写一个自动化测试。 正在开发的网页的一部分是允许用户提取数据的csv。在过去,CSV中的报头排序存在许多缺陷。 我需要打开csv,将头转换成一个数组,并与我创建的预期头的数组进行比较。 我已经读过Ruby2.0中的CSV文档,但我对Ruby还是个新手,我正在努力弄明白这一切的意义。 因此,期望csv中的第一个头eql我自己的数组中的第一个头。 我如何将csv文件头

  • 我在通过log4net记录到数据库时遇到问题。 < li >用户有权插入数据库 < li >相同的insert语句在Management Studio中有效 < li>log4net确实记录到文件,但不记录到数据库 < li >连接字符串正确(在其他应用程序中相同) 获得了以下配置: 数据库中的两列是: 消息varchar(max)不为空。 级别varchar(50)不为空 谢谢