我有一个ruby应用程序,我正在使用rspec和factorygirl,我在构建工厂时遇到了麻烦。当我运行规范时,我会在初始化时获得ArgumentError: missing keywords
所需的关键字。如果我明确地传递它们,则错误更改为wrong number of arguments 0 for 2
。
感谢您提供任何帮助。
规格/模型/ player_spec.rb
require 'spec_helper'
describe Player do
it 'has a valid factory' do
player = build(:player) # or build(:player, name: 'testname', password: 'testpw')
end
end
规格/工厂/ player.rb
FactoryGirl.define do
factory :player do
name { 'Testname' }
password { 'testpass' }
end
end
模型/ player.rb
def initialize(name:, password:)
@id = object_id
@name = name
@password = password
end
答案 0 :(得分:1)
使用以下命令更改 spec / factories / player.rb
FactoryGirl.define do
factory :player do
name 'Testname'
password 'testpass'
initialize_with { new(name:name, password: password) }
end
end
您可以找到文档here,但在这种情况下不能明确使用。
答案 1 :(得分:0)
您是否尝试使用他们在github repo Read Me上推荐的语法? 看起来像使用以下语法定义工厂:
FactoryGirl.define do
factory :player do
name 'Testname'
password 'testpass'
end
end
它们可能是等价的,但这对我来说是一个潜在的问题。似乎每当执行逻辑时都会使用块,而不是声明。
答案 2 :(得分:0)
我终于通过更改播放器#initialize方法来接受选项哈希而不是关键字参数参数来实现此目的。