Ada*_*ski 19 ruby-on-rails cucumber ruby-on-rails-3 factory-bot
这最近引起了一些挫折......
似乎在我的黄瓜测试中使用工厂,在某些情况下会导致AssociationTypeMismatch错误,例如:
MyModel(#65776650)期待,得到MyModel(#28190030)(ActiveRecord :: AssociationTypeMismatch)
当存在关联引用时,似乎会发生这些 - 就好像Factory创建的对象与实际对象不同.有关更多详细信息,请参阅此问题:Cucumber重复类问题:AssociationTypeMismatch
我一直在逐步将Factory调用更改为真正的Model.create或mock_model调用.继续使用工厂女孩会很好......我想知道是否有什么我可能做错了?
谢谢
我在Rails 3.1.0 rc5上发生了这件事,并让它运行起来.
扩展乔纳斯的答案.
您应该将Gemfile更改为:
gem 'factory_girl', '~> 2.0.0', :require => false
gem 'factory_girl_rails', '~> 1.1.0', :require => false
Run Code Online (Sandbox Code Playgroud)
然后,如果您使用Spork,请使您的spec/spec_helper.rb文件如下所示:
Spork.each_run do
require 'factory_girl'
require 'factory_girl_rails'
end
Run Code Online (Sandbox Code Playgroud)
如果 ActiveSupport 卸载并重新加载您引用的常量,似乎会发生这种情况。我在 Rspec/Capybara 上也经历过同样的事情,有帮助的是不同的东西的混合:
我正在使用Spork(一个测试服务器),这似乎让这件事变得越来越困难。如果您使用的是测试服务器,请评估是否应该在 gemspec 中的factory_girl 之后放置 ', :require => false'。
该主题也包含在这个谷歌群组线程中
请告诉我们这些是否有帮助。