我正在使用Rspec(2.11.0)和FactoryGirl(4.0.0)在Ruby on Rails 3中进行TDD / BDD。我有一个类别模型的工厂:
FactoryGirl.define "Category" do
factory :category do
name "Foo"
end
end
如果删除,请在测试环境中创建然后迁移数据库,我会收到此错误:
rake aborted!
Could not find table 'categories'
发生此问题的原因是FactoryGirl期望表已经存在(出于某种奇怪的原因)。如果我从rails应用程序中删除spec文件夹并执行
db:migrate
,那么它将起作用。另外,如果我将factory-girl-rails
中的Gemfile
标记为:require => false
,它也可以工作(然后我必须注释该要求才能运行rspec)。我在这里找到了有关此问题的一些信息:https://github.com/thoughtbot/factory_girl/issues/88
我在做错什么吗?如何在
db:migration
任务中“跳过” FactoryGirl阶段? 最佳答案
我认为您需要在Gemfile中具有像这样的工厂女孩定义:
gem 'factory_girl_rails', :require => false
然后,您只需要在spec_helper.rb中像这样:
require 'factory_girl_rails'
这就是我一直使用此gem的方式。您不需要在spec_helper.rb之外的其他地方要求它。您当前所需的方法是错误的。
关于ruby-on-rails - FactoryGirl搞砸了 rake db:迁移过程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12423273/