2009-01-13 8 views
36

Ich versuche, einige Komponententests zum Testen meiner Rails-Helfer zu erstellen, aber ich kann mich nie erinnern, wie ich darauf zugreifen kann. Nervig. Vorschläge?Wie prüfe ich Helfer in Rails?

Antwort

35

In Schienen 3 können Sie dies (und in der Tat ist es, was der Generator erstellt):

require 'test_helper' 

class YourHelperTest < ActionView::TestCase 
    test "should work" do 
    assert_equal "result", your_helper_method 
    end 
end 

Und natürlich the rspec variant by Matt Darby Werke in Schienen 3 zu

11

Stolen von hier: http://joakimandersson.se/archives/2006/10/05/test-your-rails-helpers/

require File.dirname(__FILE__) + ‘/../test_helper’ 
require ‘user_helper’ 

class UserHelperTest < Test::Unit::TestCase 

include UserHelper 

def test_a_user_helper_method_here 
end 

end 

[Stolen von Matt Darby, der auch in diesem Thread geschrieben.] Sie können in RSpec das gleiche tun wie:

require File.dirname(__FILE__) + '/../spec_helper' 

describe FoosHelper do 

    it "should do something" do 
    helper.some_helper_method.should == @something 
    end 

end 
+0

Beste aus 'ActionView abzuleiten :: TestCase' sonst haben Sie keinen Zugriff auf die' params' Hash –

28

Sie können tun, die Gleiches in RSpec als:

+0

es Zeiten wie diesen ist ich wünschte, ich zwei Antworten zustimmen könnten. Würde es Ihnen etwas ausmachen, in meiner Antwort unten in Ihre Antwort zu kopieren und einzufügen, und ich werde es zur Antwort auf diese Frage machen? – aronchick

+2

Was ist Helfer? Ich bekomme eine undefinierte lokale Variable oder Methode. –

+0

Ich habe auch die 'undefinierte lokale Variable oder den Methodenhelfer 'bekommen und dann die Anweisungen unter https://relishapp.com/rspec/rspec-rails/v/3-6/docs/helper-specs/helper- Spezifikation zu lösen. In meinem Fall hatte ich schon 'config.infer_spec_type_from_file_location!' Aber vergaß 'spec_helper' zu verlangen. Ich hoffe, das hilft! –

5

ist diese Diskussion etwas alt, aber ich dachte, dass ich mit antworten würde, was ich benutze:

# encoding: UTF-8 

require 'spec_helper' 

describe AuthHelper do 

    include AuthHelper # has methods #login and #logout that modify the session 

    describe "#login & #logout" do 
    it "logs in & out a user" do 
     user = User.new :username => "AnnOnymous" 

     login user 
     expect(session[:user]).to eq(user) 

     logout 
     expect(session[:user]).to be_nil 
    end 
    end 

end 
+0

Nur eine Warnung an Leute, die dies verwenden, gehören Konzept. Wenn Sie dies vor dem "beschreiben ..." versehentlich eingeben, wird es in diesem Einzeltest gut funktionieren, aber kann Ihre Testsuite aufgrund eines Doppel-include aufräumen. –

0

ich das gerade geschrieben antworte auf einen anderen Thread mit der gleichen Frage. Ich habe folgendes in meinem Projekt gemacht.

require_relative '../../app/helpers/import_helper'