2016-12-21 37 views
-1

So wie wir den Fehler in Initialisierungsfunktion beheben, Welche Sache muß getan werden, um diese FehlerArgument: falsche Anzahl von Argumenten (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 

entfernen Beim Testen des Modells user_spec.rb gibt es den Fehler: enter image description here

+0

Fügen Sie 'u.password_confirmation" hellohello "' in 'Fabriken/user.rb' hinzu. –

+0

Ja, ich habe u.password_confirmation "hellohello" hinzugefügt, aber immer noch das gleiche Problem. –

+5

Ihr Code muss in der Frage als * Text *, nicht als Screenshots gehen. – meagar

Antwort

0

Ändern Sie dies:

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 

Um dies:

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} 

Dies wird Rubin verursacht die Anrufe neu zu bewerten jedes Mal Faker, verschiedene Werte jedes Mal zu erzeugen.

Beachten Sie, dass es immer noch die Möglichkeit für Kollisionen gibt, da Faker :: email jedes Mal dieselbe E-Mail generieren kann. Ich würde vorschlagen, stattdessen eine Sequenz für Felder mit eindeutigen Einschränkungen zu verwenden. Etwas wie dieses:

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

Ich verwende Sequenz stattdessen von faker bekam ich die gleichen Problem Ausfall/Fehler: def initialisieren @example = nil Ende ** Argument: falsche Anzahl von Argumenten (1 0) ** –

Verwandte Themen