如何解决factory_girl错误的参数数量错误

#rspec test code @room = FactoryGirl.build(:room) #factory definition factory :room do length {10} width {20} end #code implementation class Room attr_accessor :length, :width def initialize(length,width) @length = length @width = width end end 

尝试构建@room时,运行rspec会导致此错误

ArgumentError:参数数量错误(0表示2)

FactoryGirl目前不支持带参数的初始值设定项。 因此,在运行build时尝试执行Room.new时会失败。

一个简单的解决方法可能是在测试设置中对类进行修补以解决此问题。 它不是理想的解决方案,但您可以运行测试。

所以你需要做其中任何一个(只在你的测试设置代码中):

 class Room def initialize(length = nil, width = nil) ... end end 

要么

 class Room def initialize ... end end 

这个问题在这里讨论:
https://github.com/thoughtbot/factory_girl/issues/42

…和这里:
https://github.com/thoughtbot/factory_girl/issues/19

现在确实如此。 在4.1版上测试:

 FactoryGirl.define do factory :room do length 10 width 20 initialize_with { new(length, width) } end 

结束

参考: 文档