2016-07-05 11 views
1

私は次のようにヘルパーにCURRENT_USERを使用していますヘルパーでcurrent_userをテストする方法を教えてください。

module InvestorsHelper 
    def single? 
    binding.pry 
    current_user.kyc.marital_status == 'Single' 
    end 

    def married? 
    current_user.kyc.marital_status == 'Married' 
    end 

    def politically_exposed? 
    current_user.kyc.is_politically_exposed.present? 
    end 

    def tax_residency? 
    current_user.kyc.is_tax_residency.present? 
    end 
end 

しかし、どのように私はRSpecのテストでこれらのメソッドをテストするのですか?

私は、次のRSpecのコードを書いた:

context "Investors Helper" do 
    before(:each) do 
     puts "Befpre exljfgd" 
     current_user = @user ||= FactoryGirl.create(:user) 
     @kyc ||= FactoryGirl.create(:kyc, user_id: @user.id) 
    end 

    describe InvestorsHelper, '#single?' do 
    it 'returns status of current user' do 

     result = InvestorsHelper.single? 
     binding.pry 
    end 
end 

エンド エンド

しかし、それはエラーを返します:NameError:私は間違って

undefined local variable or method `current_user' for InvestorsHelper:Module 

何をしているのですか?

答えて

0

例では、InvestorsHelpercurrent_userを定義していないため、そのエラーメッセージが表示されます。 InvestorsHelperは混在することを意図しているようですので、代わりに混ざっているものをテストするか、それをcurrent_userというモッククラスに混ぜてテストします。

さらに、私はあなたのコードがそこに失敗し、InvestorsHelper.single?には驚いています。このようなメソッドを呼び出すと、シングルトンメソッド::single?(通常はdef self.single?で定義されています)を呼び出そうとしますが、コード内でインスタンスメソッドとして宣言しています。

関連する問題