NoMethodError: {:factory=>:user}:Hash 的未定义方法 `to_sym'

man*_*nis 1 rspec ruby-on-rails ruby-on-rails-4 factory-bot

在字符工厂上调用 create 时出现错误

    factory :user do |f|
        f.sequence(:email) { |n| "foo#{n}@example.com" }
        f.password "password"       
  end

    factory :character do |f|
        f.name "testcharone"
        f.race "human"
    after(:create) { |character| character.init("fighter")}
    association factory: :user
  end
Run Code Online (Sandbox Code Playgroud)

错误:

NoMethodError:
       undefined method `to_sym' for {:factory=>:user}:Hash
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到有什么问题吗?

完成此测试需要 16 分钟,而其他类似的测试需要 5-10 分钟

describe Character do   
    let(:character) { FactoryGirl.create :character}

  describe "#add_units" do  
        context "when unit doesnt exist beforehand" do          
        it "it create a new member" do
            expect(character.owns.count).to eq(0)
            character.add_units("character", "Archer" => 1)
            expect(character.owns.count).to eq(1)
            expect(character.owns.first.amount).to eq(1)
        end
    end
Run Code Online (Sandbox Code Playgroud)

Kir*_*rat 5

factory :character

代替

 association factory: :user
Run Code Online (Sandbox Code Playgroud)

 association :user
Run Code Online (Sandbox Code Playgroud)

您必须只传递工厂名称,即:user在这种情况下,而不是散列factory: :user