2012-02-25 7 views
28

Sto cercando di includere alcuni helper per testare con rspec ma senza fortuna.Come includere gli helper delle guide su RSpec

Quello che ho fatto:

creato un file support/helpers.rb sotto la mia cartella spec.

supporto/helpers.rb

module Helpers 
    include ActionView::Helpers::NumberHelper 
    include ActionView::Helpers::TextHelper 
end 

e ha cercato di richiedere il file in spec_helper.rb.

# This file is copied to spec/ when you run 'rails generate rspec:install' 
require 'rubygems' 
require 'spork' 
require 'support/helpers' 

Spork.prefork do 
. 
. 
end 

questo genera il seguente errore:

/spec/support/helpers.rb:2:in `<module:Helpers>': uninitialized constant Helpers::ActionView (NameError) 

Come devo fare questo aiutanti a essere disponibili con Rspec?

Grazie.

risposta

28

Io di solito comprendono questo codice da richiedere tutto sotto il mio spec/support sottodirectory una volta che la pila Rails è disponibile:

Spork.prefork do 

    # ... 

    Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f } 

    RSpec.configure do |config| 
    config.include MyCustomHelper 

    # ... 
    end 
end 

Si noti che questo includerà MyCustomHelper in tutti i tipi di esempio (controllori, modelli, viste, aiutanti, ecc .). È possibile restringere che verso il basso passando un parametro :type:

config.include MyControllerHelper, :type => :controller 
+1

Grazie! 'config.include Helpers' funziona benissimo! –

+1

Nota per un caso limite: questo codice risulterà problematico nel testare un Motore di Rails, da cui dovresti iniziare da 'File.dirname (__ FILE __)' invece di 'Rails.root' poiché saranno diversi. –

+1

FYI questo è incluso (ma commentato) nel file '/ spec/rails_helpers.rb' in 5.0.1. –

14

È sufficiente includere il modulo è necessario direttamente nel file spec:

include PostsHelper 
+0

annuncio all'inizio del file – juliangonzalez