我正在尝试用使用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中的生成器配置应该照顾它,所以这似乎是问题的根源。
答案 0 :(得分:2)
搜索我发现以下内容,这可能会有所帮助:
尝试为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
如果您使用的是Test::Unit
,请尝试以下操作:
config.generators do |g|
g.stylesheets false
g.test_framework :test_unit, :fixture_replacement => :factory_girl
end
在这两种情况下,您仍然需要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上工作。