2012-06-13 41 views
1

我测试我的项目,它是关于application_helper.rb包含此方法:未定义的局部变量或方法“CURRENT_USER”(导轨)

def delete_link table="" 
     if current_user.role.name=="Admin" || current_user.role.name=="Pemilik" 
      link_to 'Hapus', table, :confirm => 'Anda yakin?', :method => :delete 
     end 
    end 

我想测试一个方法,所以我做这个测试在我的customers_controller_test.rb这样的

require 'test_helper' 

class CustomersControllerTest < ActionController::TestCase 
    include Devise::TestHelpers 
    include ApplicationHelper 
    setup do 
    @permission = Permission.create(:name=>"Customer") 
    @role = Role.create(:name=>"Admin") 
    @user = User.create(:name=>"Admin", :role_id => 1, :email => "[email protected]", :password => "123456") 
    @role_permission = RolePermission.create(:role_id=>@role.id, :permission_id=>@permission.id, :access=>2) 
    @customer = FactoryGirl.create(:customer) 

    sign_in @user  
    end 

    test "should link to delete" do 
    puts assert sign_in @user 
    current_user = @user 
    puts current_user.name 
    puts current_user.role.name 
    assert delete_link(customer_path(@customer.id)) 
    puts "2" 
    end 
end 

但我得到了未定义的局部变量或方法'current_user'。任何想法? Thx for your advice :)

回答

4

devise的current_user方法在应用程序控制器上定义,因此在助手中不可用。通过th helper方法的参数提供用户,然后进行设置。

+0

但我将它设置为application_helper.rb,它为别人工作,但不适用于我的测试。我的测试不能给当前用户参数application_helper.rb – Michelle

+0

我不能告诉你多久我一直在寻找这个答案,谢谢! –

相关问题