Как заставить rspec загружать config.ru? - PullRequest
0 голосов
/ 15 июня 2019

Я использую гем rack-contrib для установки локали из заголовка HTTP_ACCEPT_LANGUAGE, поэтому мой файл config.ru имеет

puts 'Running config.ru'
require 'rack'
require 'rack/contrib/locale'
use  Rack::Locale

При работе в режиме разработки я вижу сообщение Running config.ru, но когдаЯ запускаю rspec, я не вижу сообщения, поэтому rspec не загружает config.ru.

В режиме разработки языковой стандарт устанавливается на Rack::Locale, как и ожидалось.Когда я запускаю этот тестовый файл, rspec spec/requests/localization_spec.rb

require 'rails_helper'
describe 'Localization' do
    describe 'Setting from header' do
        it 'should set the locale for french' do
            header 'ACCEPT_LANGUAGE', 'fr'
            gets '/'
            expect(last_request.env['rack.locale']).to eq 'fr'
        end
    end
end

языковой стандарт не устанавливается на :fr, и я не вижу сообщение Running config.ru.

1 Ответ

1 голос
/ 29 июня 2019

RSpec не загружает config.ru, поскольку не знает, что это такое.Вам нужно смоделировать, что будет делать веб-сервер.Это приблизительно соответствует настройке стиля в стойке.Включение Rack::Test::API в ваши спецификации позволит вам использовать тестирование стойки с файлом стойки.

module Rack::Test::API
  include Rack::Test::Methods

  def app
    @app ||= Rack::Builder.parse_file('path/to/config.ru').first
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...