2012-02-25 2 views
28

Я пытаюсь включить некоторых помощников для проверки с помощью rspec, но не повезло.Как включить помощников Rails в RSpec

Что я сделал:

создал support/helpers.rb файл под мою spec папки.

поддержка/helpers.rb

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

и пытался требовать этого файла в 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 

это порождает следующую ошибку:

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

Как я должен сделать это помощникам быть доступны с Rspec?

Спасибо.

ответ

28

Я обычно включаю в себя этот код, чтобы требовать все под мой подкаталоге spec/support раз стек Rails доступно:

Spork.prefork do 

    # ... 

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

    RSpec.configure do |config| 
    config.include MyCustomHelper 

    # ... 
    end 
end 

Обратите внимание, что это будет включать в себя MyCustomHelper во всех примерах типов (контроллеры, модель, представление, помощник и т.д. .). Вы можете сократить, что вниз, передавая параметр :type:

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

Спасибо! 'config.include Helpers' отлично работают! –

+1

Примечание для случая кромки: этот код будет проблематичным при тестировании Rails Engine, где вы должны начинать с 'File.dirname (__ FILE __)' вместо 'Rails.root', поскольку они будут отличаться. –

+1

FYI это включение (но прокомментированное) в файле '/ spec/rails_helpers.rb' в 5.0.1. –

14

Просто включите модуль вам нужно непосредственно в файле спецификации:

include PostsHelper 
+0

объявление начало файла – juliangonzalez

Смежные вопросы