2016-08-03 54 views
0

我想创建一个简单的测试我的应用程序与设计。如果用户未登录,我设置了重定向,但即使在测试之前使用了sign_in,我仍然会重定向。当我手动测试这个,它工作正常。Rails控制器测试与意想不到的行为设计登录

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 

回答

0

我找到了一段代码,用设计和可确认选项处理用户模型的灯具。所以,我的用户的灯具应该是这样的:

users.yml里

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