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

Aru*_*run 10 ruby factory-bot

#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
Run Code Online (Sandbox Code Playgroud)

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

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

B S*_*ven 21

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

FactoryGirl.define do

  factory :room do
    length 10
    width 20
    initialize_with { new(length, width) }
  end
Run Code Online (Sandbox Code Playgroud)

结束

参考:文档


Cas*_*per 10

FactoryGirl目前不支持带参数的初始值设定项.所以Room.new当你跑步的时候它会失败build.

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

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

class Room
   def initialize(length = nil, width = nil)
     ...
   end
end
Run Code Online (Sandbox Code Playgroud)

要么

class Room
  def initialize
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

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

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