2012-06-13 61 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

我不能告訴你多久我一直在尋找這個答案,謝謝! –

相關問題