2016-12-21 62 views
-1

那么,我们如何解决初始化函数的错误,这件事需要做消除这种误差引发ArgumentError:错误的参数数目(1 0)

Here is the Factories/user.rb

FactoryGirl.define do 
    factory :user do |u| 
    u.first_name Faker::Name.first_name 
    u.last_name Faker::Name.last_name 
    u.email Faker::Internet.email 
    u.username Faker::Name.name 
    u.title Faker::Name.title 
    u.password "hellohello" 
    u.password_confirmation "hellohello" 
end 
end 

Here is the mode spec model/user_spec.rb

require 'rails_helper' 

RSpec.describe User, :type => :model do 

    user = '' 
    describe "create" do 
    user = FactoryGirl.create(:user) 
    end 
    #describe "validations" 
    describe "Count all the user" do 
    it "should have one item created before being created" do 
     #binding.pry 
     expect(User.all.count).to eq(1) 
    end 
end 
end 

当测试模型user_spec.rb时,它会给出错误: enter image description here

+0

请将'u.password_confirmation“hellohello''添加到'Factories/user.rb'中。 –

+0

是的,我已经添加了u.password_confirmation“hellohello”,但仍然有相同的问题。 –

+5

您的代码需要以* text *的形式出现,而不是屏幕截图。 – meagar

回答

0

更改此项:

u.first_name Faker::Name.first_name 
u.last_name Faker::Name.last_name 
u.email Faker::Internet.email 
u.username Faker::Name.name 
u.title Faker::Name.title 

向该:

u.first_name {Faker::Name.first_name} 
u.last_name {Faker::Name.last_name} 
u.email {Faker::Internet.email} 
u.username {Faker::Name.name} 
u.title {Faker::Name.title} 

这将导致红宝石重新评估呼叫每次骗子,每次生成不同的值。

请注意,仍有可能发生冲突,因为每次Faker ::电子邮件都会生成相同的电子邮件。我建议使用序列来代替具有唯一约束的字段。像这样:

sequence(:email) { |n| "person#{n}@example.com" } 
    sequence(:username, 1000) { |n| "user#{n}" } 
+1

我使用序列代替我得到了同样的问题 失败/错误: def初始化 @example = nil 结束 **参数错误:错误的参数数量(1为0)** –

相关问题