2016-08-03 12 views
0

Ich versuche, eine einfache Tests auf meiner Anwendung mit Gerät zu erstellen. Ich habe eine Umleitung eingerichtet, wenn der Benutzer nicht angemeldet ist, aber obwohl ich vor dem Test sign_in benutze, werde ich immer noch umgeleitet. Wenn ich das manuell teste, funktioniert es gut.Rails Controller Tests mit Devise anmelden unerwartetes Verhalten

users.yml

george: 
    name: George 
    email: [email protected] 
    encrypted_password: <%= Devise::Encryptor.digest User, '123456' %> 

addresses.yml

georges_home: 
    title: Home 
    receiver: George 
    street: '132 Mitchell St SW' 
    country: 'US' 
    city: 'Atlanta' 
    postal_code: '30303' 
    phone: '+1 404-524-5665' 
    state: 'Georgia' 
    user: george 

addresses_controller.rb

class AddressesController < ApplicationController 
    before_action :login_needed 

    def index 
    @addresses = Address.where(user_id: @current_user.id) 
    end 

    private 
    def login_needed 
    if !user_signed_in? 
     redirect_to new_user_session_path, alert: 'Please log in.' 
    end 
    end 
end 

addresses_controller_test.rb

require 'test_helper' 

class AddressesControllerTest < ActionController::TestCase 
    include Devise::TestHelpers 

    setup do 
    sign_in users(:george) 
    @address = addresses(:georges_home) 
    end 

    test "should get index" do 
    get :index 
    assert_response :success 
    assert_not_nil assigns(:addresses) 
    end 
end 

Antwort

0

Ich habe einen Code gefunden, der sich mit Fixtures eines User-Modells mit Devise und der bestätigbaren Option beschäftigt. So sollte meine Benutzer Leuchte wie folgt aussehen:

users.yml

george: 
    name: George 
    email: [email protected] 
    encrypted_password: <%= Devise::Encryptor.digest User, '123456' %> 
    confirmed_at: <%= Date.today %>