2016-12-13 6 views
1

ich durch Michael Hartl Ruby Tutorial werde und haben für einen Tag auf einem fehlerhaften TestNoMethodError Fehler in Rails

ich dieses stecken, als ich laufen:

Error: 
UsersControllerTest#test_should_redirect_edit_when_logged_in_as_wrong_user: 
NoMethodError: undefined method `session' for nil:NilClass 
test/test_helper.rb:19:in `log_in_as' 
test/controllers/users_controller_test.rb:37:in `block in <class:UsersControllerTest>' 

Hier wird die Telefonvorwahl ist :

require 'test_helper' 

class UsersControllerTest < ActionDispatch::IntegrationTest 

    def setup 
    @user  = users(:michael) 
    @otheruser = users(:archer) 
    end 

test "should redirect update when logged in as wrong user" do 
    log_in_as(@other_user) 
    patch user_path(@user), params: { user: { name: @user.name, 
               email: @user.email } } 
    assert flash.empty? 
    assert_redirected_to root_url 
    end 


*And here is the method I'm trying to call from the **test_helper** class:* 

# Log in as a particular user 
    def log_in_as(user) 
    session[:user_id] = user.id 
    end 
+0

Ein guter Ratschlag, den ich vor kurzem von einem Rails-Entwickler bekommen habe - wenn er festgefahren ist, durchquere den Code mit "rails c" (die Rails-Kommandozeile). Viel Glück! –

Antwort

0

Haben schließen Sie diese Codezeile: include SessionsHelper in Ihrem application_controller.rb?

Sie haben Tippfehler in Setup-Methode aus dem Code oben: Test/controllers/users_controller_test.rb

besonders in diesem Teil der: @otheruser = users(:archer)@other_user = users(:archer)

Überprüfen Sie den Code erneut aus der Testdatei sein sollte code:

test "should redirect edit when logged in as wrong user" do 
    log_in_as(@other_user) 
    get edit_user_path(@user) 
    assert flash.empty? 
    assert_redirected_to root_url 
    end 

Hoffe es hilft!

+0

SessionsHelper ist in application_controller.rb enthalten. Ich habe auch diesen Tippfehler behoben, aber es hat nicht geholfen. Danke, dass du es gefunden hast. – user7288350

+0

Haben Sie einen Repo des von Ihnen geposteten Codes? – Blackcoat77

+0

https://bitbucket.org/carldjensen/locumlair Danke. – user7288350

1

ich einen Teil meiner test_helper.rb Klasse fehlt:

class ActionDispatch::IntegrationTest 

    # Log in as a particular user. 
    def log_in_as(user, password: 'password', remember_me: '1') 
    post login_path, params: { session: { email: user.email, 
              password: password, 
              remember_me: remember_me } } 
    end 
end 

Vielen Dank einen Blick für die Aufnahme!

+0

Ich bin froh, dass du es gefunden hast! Funktioniert es jetzt? – Blackcoat77

Verwandte Themen