我的黄瓜测试正在修改开发数据库。如何让它来修改测试数据库呢?

时间:2011-08-30 16:57:55

标签: ruby-on-rails cucumber

在我的features / support / env.rb文件的顶部:

ENV["RAILS_ENV"] = 'test'

BUt测试仍然修改开发数据库.... 即使我做了

rake cucumber:authentication RAILS_ENV=test

它仍会更改dev db

我还需要改变什么?

database.yml中:

development:
  adapter: mysql
  encoding: utf8
  database: app_dev
  username: root
  password:

test:
  adapter: mysql
  encoding: utf8
  database: app_test
  username: root
  password:

production:
  adapter: mysql
  encoding: utf8
  database: app_production
  username: root
  password: 

cucumber: &CUCUMBER
    adapter: mysql
    encoding: utf8
    database: app_cuke
    username: root
    password:

culerity:
  <<: *CUCUMBER

使用:

 ruby 1.8.7
    rails 2.3.8
    and cucumber 1.0.2 

3 个答案:

答案 0 :(得分:0)

检查database.yml 您可能已为测试环境指定了开发数据库吗?

好的,基本的安装步骤是

bundle install
rails generate cucumber:install

检查database.yml,指定正确的连接细节

rake db:create
rake db:migrate

检查黄瓜

rake cucumber

这个步骤的结果是什么? 特别是你为测试创建并迁移了数据库吗?

答案 1 :(得分:0)

我有类似的问题,我解决了这个问题:

cucumber.rake中,我添加了rake任务

task :ensure_test_env do
  ENV['RAILS_ENV'] = 'test'
end

然后我让所有黄瓜任务依赖于它

Cucumber::Rake::Task.new({:ok => ['db:test:prepare', :ensure_test_env]}, ...

答案 2 :(得分:0)

同样dotenv可能会导致这种情况,因为如果.env文件中设置了DATABASE_URL,则无论如何都将使用此数据库。这导致我的测试连接到我的开发数据库。