我正在使用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/

10-12 16:22