1

我正在为我的 Rails 应用程序使用黄瓜编写 BDD,但在运行“黄瓜”时遇到问题

我的测试数据库是“test_db”。当我运行 cucumber features/my_Feature_file.feature 时,它​​显示场景通过或失败,但同时它也在清理我的数据库。

我是黄瓜的新手。所以请告诉我,当你运行 cucumber 时,测试默认情况下,数据库将被清理。就像如果我正在为用户登录编写 BDD,那么如果没有任何记录,那么我的步骤将如何检查用户是否有效?

我在用:

Gemfile(用于测试)-

group :test do
  gem 'ZenTest'
  gem 'autotest-rails'
  gem 'autotest-growl'
  gem 'selenium'
  gem 'selenium-client'
  gem 'capybara'
  gem 'database_cleaner'
  gem 'cucumber-rails'
  gem 'cucumber'
  gem 'rspec-rails'
  gem 'spork'
  gem 'xpath'
  gem 'launchy'
  gem 'cucumber-sinatra'
  gem 'webrat'
end

功能/支持/env.rb-

require 'cucumber/rails'
Capybara.default_selector = :css
ActionController::Base.allow_rescue = false

begin
  DatabaseCleaner.strategy = :transaction
  #DatabaseCleaner.strategy = nil
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::Database.javascript_strategy = :truncation

我尝试使用:

DatabaseCleaner.strategy = nil

Cucumber::Rails::World.use_transactional_fixtures = false

有人可以消除我的困惑并指导我正确的方式吗?高度赞赏帮助。

4

2 回答 2

1

如果您不想清理数据库,您只需从 Gemfile 中删除 database_cleaner gem 并清理 env.rb 文件。

我强烈建议你保留它。为每个场景重置数据库的目的是证明功能在原始设置中起作用,而不是因为预先存在的数据条件。

每个场景都应该独立于其他场景。

于 2013-03-05T15:16:47.760 回答
0

如果您不想使用,则不必使用它。我们的项目中没有它。use_transactional_fixtures如果您也不想使用它,则无需设置。

如果你想使用它,你可以通过注册一个新用户来开始你的功能测试,然后使用这个用户来验证登录和注销。运行测试后,DatabaseCleaner 将在最后删除用户。

于 2013-03-05T11:05:36.937 回答