如何解决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
现在确实如此。 在4.1版上测试:
FactoryGirl.define do factory :room do length 10 width 20 initialize_with { new(length, width) } end
结束
参考: 文档