工厂已注册:用户(FactoryGirl::DuplicateDefinitionError)

问题描述:
-我已经设置了factory\u girl\u rails,但是每当我尝试加载工厂时,它都会尝试多次加载

环境:
-轨道(3.2.1)
-工厂女孩(2.5.2)
-工厂女孩轨道(1.6.0)
-ruby-1.9.3-p0[x86_64]
&燃气轮机;rake规范-跟踪
**执行环境
--创建用户工厂
--创建用户工厂
雷克流产了!
工厂已注册:用户

我唯一改变的是:
/config/initializers/generator.rb

Rails.application.config.generators do | g|
g、 测试框架=:rspec
g、 夹具更换:工厂女孩
终止

GEMFILE

gem'rails',3.2.1'
#而是捆绑边缘轨道:
#gem'rails',:git=>'git://github.com/rails/rails.git'
集团:资产做什么
gem'sass-rails','~>3.2.3'
gem“咖啡轨”,“~>3.2.1'
宝石'uglifier','gt;=1.0.3'
终止
gem'jqueryrails'
宝石“设计”
宝石“哈姆轨道”
小组:发展怎么办
宝石“hpricot”
gem‘ruby_解析器’
gem“rspec轨道”
终止
组:测试do
宝石“rspec”
宝石“工厂女孩轨道”
终止
gem'refinerycms core',:git=>'git://github.com/resolve/refinerycms.git'
gem'refinerycms dashboard',:git=>'git://github.com/resolve/refinerycms.git'
gem'refinerycms图像',:git=>'git://github.com/resolve/refinerycms.git'
gem'refinerycms页面',:git=>'git://github.com/resolve/refinerycms.git'
gem'refinerycms资源',:git=>'git://github.com/resolve/refinerycms.git'
gem'refinerycms settings',:git=>'git://github.com/resolve/refinerycms.git'
小组:开发,:测试
gem‘精炼CMS测试’,:git=>'git://github.com/resolve/refinerycms.git'
终止
gem“精炼CMS库存”,路径=>'供应商/发动机
工厂女孩
工厂:角色是什么
标题“MyString”
终止
终止

这似乎是一个我无法理解的兼容性/环境问题。有什么建议吗

编辑:这是我的spec/spec\u helper.rb:

ENV[“RAILS_ENV”]| |=“test”
需要文件。展开\u路径(“../../config/environment”,\u文件\u)
需要“rspec/rails”
需要“rspec/自动运行”
#需要“工厂\女孩\轨道”
#需要支持带有自定义匹配器和宏等的ruby文件,
#在spec/support/及其子目录中。
Dir[Rails.root.join(“spec/support/***.rb”)]。每个{f |都需要f}
RSpec.configure do | config|
###模拟框架
#
#如果您喜欢使用mocha、flexmock或RR,请取消注释相应行:
#
#config.mock_with:mocha
#config.mock_with:flexmock
#config.mock_with:rr
#如果不使用ActiveRecord或ActiveRecord设备,请删除此行
#config.fixture_path=“#{::Rails.root}/spec/fixtures”
#如果您不使用ActiveRecord,或者您不希望运行每个
#在事务中的示例中,删除以下行或赋值为false
#而不是真的。
config.use\u transactional\u fixtures=true
#如果为true,将推断匿名控制器的基类
#自动地。这将是的未来版本中的默认行为
#rspec导轨。
config.expert\u base\u class\u for\u anonymous\u controllers=false
终止

gemfactory\u girl\u rails应该在spec\u helper.rb中而不是在gem文件中是必需的-您可能需要FactoryGirl两次,这就是您获得副本的原因

在gem文件中尝试以下操作:

组:测试do
宝石“rspec”
gem“工厂女孩轨道”:要求=>错误的
终止

然后确保在spec_helper中需要factory girl,包括:

要求“工厂女孩轨道”

顺便说一下,您不需要在GEM文件中同时使用rspecrpsecrails。您可以用以下内容替换这两个选项:

组:开发:测试执行
gem'rspec rails'
终止

在这两个组中都需要rspec,这样rake任务将在开发中工作,而核心测试将在测试中工作

发表评论