【发布时间】:2013-12-04 07:58:25
【问题描述】:
就像标题中建议的那样,我有一个奇怪的错误。事实上,当我尝试为测试环境保留一个操作(例如:rake test:prepare)时,它会以某种方式影响其他环境并删除我数据库中的所有记录(mysql) . (我正在使用 rspec,并且我正在遵循 Michael Hartl 的教程。) 另一个例子(可能更清楚)是当我编写涉及通过 FactoryGirl 创建和取消新用户的测试时:
位置:spec/factories.rb
FactoryGirl.define do
factory :user do
sequence(:name) {|n| "Person #{n}"}
sequence(:email) {|n| "person_#{n}@example.it"}
password "luckyluke"
password_confirmation "luckyluke"
factory :admin do
admin true
end
end
位置:spec/requests/users_pages_spec.rb
describe "pagination" do
before(:all) { 30.times { FactoryGirl.create(:user) } }
after(:all) { User.delete_all }
# tests...
end
虽然我进入了测试环境,但当我运行时 bundle exec rspec spec/requests/users_pages_spec.rb ,rails 确实在我的数据库上创建了 30 个用户,并且真的从数据库中删除了所有用户。 (也是测试前创建和存储的用户!!)。
附:对不起我的英语
【问题讨论】:
-
检查您的
config/database.yml文件以确保您的测试数据库与您的开发数据库不同。
标签: ruby-on-rails rspec ruby-on-rails-4 tdd factory-bot