2015-10-08 3 views
2

.Hi. У меня есть этот API и настраиваемый заголовок, который должен быть передан во всех запросах любому контроллеру. В Minitest я должен сделать @request.headers['Custom-Header'] = 'Custom Value' в каждом отдельном тесте. Ну, бывает, у меня много контроллеров, и этот код повторяется в верхнем describe блоке в каждом файле.Лучший способ установить заголовок для всех тестов с использованием Minitest

Я пытался понять, как сделать этот DRYer. Я даже пробовал:

module Minitest::CustomHeaderSetup 
    def before_setup 
    super 
    @request.headers['Custom-Header'] = 'Custom Value' if @request.present? 
    end 

    Minitest::Test.send(:include, self) 
end 

Но @request не существует в данный момент. Есть предположения? Благодаря!

ответ

4

Решенный!

Minitest::Test.send(:include, self) применяет этот код к каждому тестовому файлу, а не только к испытаниям контроллера. Итак, что должно быть на самом деле сделать это:

module Minitest::CustomHeaderSetup 
    def before_setup 
    super 
    @request.headers['Custom-Header'] = 'Custom Value' 
    end 
end 

И эти тестовые файлы контроллеров, которые мы хотим вести себя так, мы должны добавить:

include Minitest::CustomHeaderSetup 

UPDATE

Это будет автоматически установите настраиваемый заголовок для всех проверок вашего контроллера.

module Minitest::CustomHeaderSetup              
    def before_setup 
    super 
    @request.headers['Custom-Header'] = 'Custom Value' 
    end 

    ActionController::TestCase.send(:include, self) 
end 
+0

Привет, где следует добавить этот код, кажется, @request is nil? –

+0

'Minitest :: CustomHeaderSetup' может работать в тестовом файле поддержки как' test/support/custom_header_setup.rb'. –

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