FactoryGirl没有在构建

时间:2015-06-06 04:55:38

标签: ruby testing rspec factory-bot

我有一个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

3 个答案:

答案 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方法来接受选项哈希而不是关键字参数参数来实现此目的。