2017-01-18 2 views
1

Ich habe die Tests ausgeführt und es scheint nicht, dass der Benutzer von einem Factory Girl erstellt wird. Hier ist, was ich habe:RSpec Rails NoMethodError: undefinierte Methode `password = 'für Benutzer

reports_controller_spec.rb

require 'rails_helper' 

RSpec.describe ReportsController do 
    let(:user) { create :user } 

    before { sign_in user } 

    describe 'GET #subjects' do 
    subject { get :subjects } 

    it_behaves_like 'template rendering action', :subjects 
    end 
end 

Fabriken/users.rb

FactoryGirl.define do 
    factory :user do 
    email { Faker::Internet.safe_email } 
    password { Faker::Internet.password } 
    end 
end 

Und wenn ich den Test ausführen bekomme ich diesen Fehler:

ReportsController 
    GET #subjects 
    behaves like template rendering action 
     example at ./spec/support/shared/template_rendering_action.rb:2 (FAILED - 1) 

Failures: 

    1) ReportsController GET #subjects behaves like template rendering action 
    Failure/Error: Unable to find matching line from backtrace 
    NoMethodError: 
     undefined method `password=' for #<User:0x000000063abd20> 
    Shared Example Group: "template rendering action" called from ./spec/controllers/reports_controller_spec.rb:11 
... 

I verstehe nicht, warum es nicht funktioniert. Jeder könnte mich auf den Fehler hinweisen? Vielen Dank.

Edit: Ich benutze Gerät.

+1

Es sieht aus wie factory hinzufügen können Benutzer nicht erstellen Ursache es nicht sein Passwort zuweisen können. Könnten Sie Ihren Benutzermodellcode hinzufügen? – VAD

+1

Ok, du benutzt Devise. Sie sollten zuerst die 'password_confirmation' zu Ihrer': user' Fabrik hinzufügen – VAD

+0

Ja, es hat funktioniert, danke! Wie kann ich Ihre Antwort als richtig angeben? :) –

Antwort

2

Wenn Sie Devise verwenden, müssen Sie die password_confirmation auf Ihre :user Fabrik

Verwandte Themen