如何使用rails3发电机替换工厂?

时间:2011-02-23 13:06:39

标签: ruby ruby-on-rails-3 factory-bot

我正在尝试用使用rails3-generators的工厂替换夹具生成:

https://github.com/indirect/rails3-generators#readme

gem包含在我的Gemfile中并已安装:

# Gemfile
gem 'rails3-generators', :group => :development

我在application.rb中添加了以下内容:

# application.rb
config.generators do |g|
  g.stylesheets false
  g.fixture_replacement :factory_girl
end

然而'rails g model Insect'仍在生成灯具('insect.yml')。这对其他人使用Rails 3.0.4和rails3-generators 0.17.4吗?

'rails g'显示可用的新生成器(例如Authlogic和Koala),但'rails g model'仍然列出了fixture并且没有引用工厂。

我还应该添加什么才能让它发挥作用?感谢。

编辑:我运行了gem的测试套件,其中包含一个测试,然后通过。不知道为什么它不能与我的应用程序一起使用。

Edit2 :我再次尝试使用测试项目并得到相同的结果:fixtures而不是工厂。如果有人可以通过Rails 3.0.4和rails3-generators 0.17.4确认这是否适用,那也会有所帮助,因为这意味着我的项目出错了。

Edit3 :如果我运行'rails g model Insect -r factory_girl',它就可以了。我认为application.rb中的生成器配置应该照顾它,所以这似乎是问题的根源。

2 个答案:

答案 0 :(得分:2)

搜索我发现以下内容,这可能会有所帮助:

  1. 尝试为factory_girl的工厂指定目录选项:

    config.generators do |g|
      g.stylesheets false
      g.fixture_replacement :factory_girl, :dir => "spec/factories" # or test/factories, as the case may be
    end
    
  2. 如果您使用的是Test::Unit,请尝试以下操作:

    config.generators do |g|
      g.stylesheets false
      g.test_framework  :test_unit, :fixture_replacement => :factory_girl
    end
    
  3. 在这两种情况下,您仍然需要rails3-generators gem,尽管可以将该功能转化为factory_girl_rails

    This Rails bug表示,在某些时候,g.fixture_replacement代码可能无法正常运行。也许3.0.5中的测试是有序的。 :)

答案 1 :(得分:0)

9年后的简短更新:

使用“ factory_bot_rails”代替“ factory_girl_rails”(现已弃用)。

现在,将自动创建工厂:

$ rails g模型测试器名称:string

在流程31467中通过Spring预加载器运行

 invoke  active_record

 create    db/migrate/20200327152901_create_testers.rb

 create    app/models/tester.rb

 invoke    rspec

 create      spec/models/tester_spec.rb

 invoke      factory_bot

 create        spec/factories/testers.rb

我使用rails 5.2.4,但这也应该在rails 6上工作。