首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何告诉黄瓜和数据库清理器将我的种子数据留在我的rails测试数据库中?

如何告诉黄瓜和数据库清理器将我的种子数据留在我的rails测试数据库中?
EN

Stack Overflow用户
提问于 2012-05-25 22:19:07
回答 2查看 3.4K关注 0票数 5

我有几个表,其中包含参数和其他东西,它永远不会改变!

但是,我不能告诉database_cleaner保存这些数据,每次测试之后,它会截断我的所有数据库。

Gems

代码语言:javascript
复制
gem "cucumber-rails", "~> 1.3.0", require: false
gem 'factory_girl_rails'
gem 'database_cleaner'

Config/cucumber.yml

代码语言:javascript
复制
enter code here
<%
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'}     features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
%>
default: <%= std_opts %> features
wip: --tags @wip:3 --wip features
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip

Features/support/env

代码语言:javascript
复制
require 'cucumber/rails'
require 'database_cleaner'
require 'database_cleaner/cucumber'
require 'factory_girl_rails'

Capybara.default_selector = :css
ActionController::Base.allow_rescue = false

begin
  DatabaseCleaner.logger = Rails.logger
  DatabaseCleaner.clean_with(:truncation, :except => %w[regions departements villes positions levels footballtypes genders publicies types])
  DatabaseCleaner.strategy = :truncation, {:except => %w[regions departements villes positions levels footballtypes genders publicies types]}
rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

Cucumber::Rails::World.use_transactional_fixtures = false
Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
  DatabaseCleaner.clean_with(:truncation, :except => %w[regions departements villes positions levels footballtypes genders publicies types])
  DatabaseCleaner.strategy = :truncation, {:except => %w[regions departements villes positions levels footballtypes genders publicies types]}
end

Before do
  DatabaseCleaner.strategy = :truncation, {:except => %w[regions departements villes positions levels footballtypes genders publicies types]}
  DatabaseCleaner.clean_with(:truncation, :except => %w[regions departements villes positions levels footballtypes genders publicies types])
  DatabaseCleaner.start
end

After do |scenario|
  DatabaseCleaner.clean_with(:truncation, :except => %w[regions departements villes positions levels footballtypes genders publicies types])
  DatabaseCleaner.strategy = :truncation, {:except => %w[regions departements villes positions levels footballtypes genders publicies types]}
  DatabaseCleaner.clean
end

你有线索吗?谢谢,纳尔逊

EN

回答 2

Stack Overflow用户

发布于 2013-11-08 21:39:43

这个问题一直在搜索‘数据库-更干净的黄瓜设置截断种子’,所以,即使这是一个老问题,我将添加这个答案。

对我来说,起作用的是将一个ruby文件添加到功能/支持目录中,内容如下:

Cucumber::Rails::Database.javascript_strategy = :truncation, {:except => %w[regions departements villes]}

(我用你的桌子代替了我的。)您可以将这一行添加到env.rb,但该文件有一个警告不要编辑。显然,在运行黄瓜时,特性/支持目录中的任何.rb文件都会运行。我的是“setup.rb”。

这将重写Cucumber的默认设置,该设置在@javascript标记的场景之后截断整个数据库。

使用版本:黄瓜(1.3.9),黄瓜-rails (1.4.0)。

也请参阅How do I get cucumber and databasecleaner to leave my seed data in my rails test db?并尝试

DatabaseCleaner.strategy = :truncation, {:except => %w[regions departements villes]}

见文档中的http://github.com/DatabaseCleaner/database_cleaner#how-to-use。再说一遍,您似乎已经在这样做了。设置Cucumber::Rails::Database.javascript_strategy是在Selenium驱动程序上修复我的javascript测试的额外酱汁。

现在洗干净,把它弄干;)

票数 1
EN

Stack Overflow用户

发布于 2012-05-26 14:05:53

上面粘贴的代码(env.rb)首先让人困扰的是所有的复制。在使用database_cleaner时,我从来没有这样做过。如果将文件简化为以下内容会发生什么情况:

代码语言:javascript
复制
require 'cucumber/rails'
require 'database_cleaner'
require 'database_cleaner/cucumber'
require 'factory_girl_rails'

Capybara.default_selector = :css
ActionController::Base.allow_rescue = false
Cucumber::Rails::World.use_transactional_fixtures = false


DatabaseCleaner.logger = Rails.logger
DatabaseCleaner.strategy = :truncation, {:except => %w[regions departements villes positions levels footballtypes genders publicies types]}

Before do
  DatabaseCleaner.start
end

After do |scenario|
  DatabaseCleaner.clean
end

这更接近我过去所做的和我所看到的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10761983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档