2009-01-13 7 views

risposta

35

in rails 3 si può fare questo (e in realtà è quello che crea il generatore):

require 'test_helper' 

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

E naturalmente the rspec variant by Matt Darby opere in Rails 3 anche

11

rubato da qui: 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 

[rubati da Matt Darby, che ha anche scritto in questa discussione.] Si può fare lo stesso in RSpec come:

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

describe FoosHelper do 

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

end 
+0

migliore derivare da 'ActionView :: TestCase' altrimenti non avrete accesso al' Hash params' –

28

È possibile fare la stessa in RSpec come:

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

describe FoosHelper do 

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

end 
+0

è momenti come questo vorrei poter approvare due risposte. Ti dispiacerebbe copiare e incollare nella mia risposta in basso nella tua risposta e farò in modo che risponda a questa domanda? – aronchick

+2

Che cos'è l'aiuto? Ricevo 'variabile locale o metodo' non definito. –

+0

Ho ottenuto anche la 'variabile locale non definita o l'helper del metodo ', quindi ho seguito le istruzioni su https://relishapp.com/rspec/rspec-rails/v/3-6/docs/helper-specs/helper- specifica da risolvere. Nel mio caso, ho già avuto "config.infer_spec_type_from_file_location!" Ma ho dimenticato di "require 'spec_helper''. Spero possa aiutare! –

5

Questo thread è una specie di vecchio, ma ho pensato di rispondere con quello che io uso:

# 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

Un solo avvertimento per chi usa questo concetto include . Se accidentalmente lo metti PRIMA del "descrivi ..." funzionerà bene in quel singolo test, ma potrebbe rovinare la tua suite di test a causa di una doppia inclusione. –

0

ho appena postato questo rispondi su un altro thread facendo la stessa domanda. Ho fatto la seguente nel mio progetto.

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