factory_girl和factory_girl_rails Ruby Gems之间的区别

use*_*965 0 ruby rspec ruby-on-rails factory-bot

factory_girlfactory_girl_railsRuby Gems 有区别吗?我有一个反复出现的问题,RSpec测试中出现错误:"未初始化的常量FactoryGirl(NameError)".

有人告诉我,两者之间存在差异(这实在令人困惑),而另一方需要另一方工作或沿着这些方向发展?

我的spec_helper文件包含:

require 'factory_girl'
require 'factory_girl_rails'
Run Code Online (Sandbox Code Playgroud)

我的Gemfile有:

gem 'factory_girl_rails'
Run Code Online (Sandbox Code Playgroud)

这是完整的错误:

uninitialized constant FactoryGirl (NameError)
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `load'
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `each'
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/configuration.rb:896:in `load_spec_files'
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:22:in `run'
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:80:in `run'
    from /srv/homes/rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:17:in `block in autorun'
****@epi-stu-hut-shell3:~/projects/project4/spec/factories$ 
Run Code Online (Sandbox Code Playgroud)

Dan*_*hoe 5

你只需要:

group :development, :test do
  gem "rspec-rails"
  gem "factory_girl_rails"
end
Run Code Online (Sandbox Code Playgroud)

因为factory_girl_rails自动合并了factory_girl gem并添加了对Rails的支持.

这些宝石同时适用于测试和开发组,因为Rails生成器将在开发中创建存根文件,当然在测试环境中也需要它们.

无需将factory_girl或factory_girl_rails添加到specs/spec_helper.rb文件中.