2015-02-18 3 views
0

, поэтому мне нужно настроить отображение конфигурации для моих тестов для правильной работы. Per https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-%28and-RSpec%29, я добавилRSpec перед путаницей с графическими отображениями

describe Api::SessionsController do 
    before(:each) do 
    @request.env["devise.mapping"] = Devise.mappings[:admin] 
    end 
    ... 
end 

Это прекрасно работает. Однако, поскольку я буду повторно использовать это по нескольким спецификациям, я хотел бы поместить его в модуль в папке поддержки. Следовательно:

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

module Controllers 
    module DeviseHelpers 
    def set_devise_mapping 
     before(:each) do 
     @request.env["devise.mapping"] = Devise.mappings[:api_user] 
     end 
    end 
    end 
end 

И включить модуль с помощью:

RSpec.configure do |config| 
    config.include Controllers::DeviseHelpers, type: :controller 
end 

А потом в спецификации:

describe Api::SessionsController do 
    set_devise_mapping 
end 

и я получаю следующее ошибка:

ruby/gems/2.2.0/gems/rspec-core-3.2.0/lib/rspec/core/example_group.rb:626:in `method_missing': 
`set_devise_mapping` is not available on an example group (e.g. a `describe` or `context` block). 
It is only available from within individual examples (e.g. `it` blocks) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). (RSpec::Core::ExampleGroup::WrongScopeError) 

Зачем я это получаю? Это то, что делает пример github, приведенный выше. Также он работает без метода. Я пытался использовать контекст и помещать его в разные места, но я получаю сообщение об ошибке, независимо от того, где я его разместил.

Спасибо!

ответ

2

Ваш метод set_devise_mapping внутри описывают но не это

вместо (эту работу при использовании в он блоки)

config.include Controllers::DeviseHelpers, type: :controller

сусло (эта работа при использовании в описание)

config.extend Controllers::DeviseHelpers, type: :controller

+0

Это вызывает ошибку: неинициализированные постоянные контроллеры. – Jarred

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