如何让rspec加载config.ru?
How to make rspec load config.ru?
我正在使用 rack-contrib
gem 从 HTTP_ACCEPT_LANGUAGE header 设置语言环境,所以我的 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
消息。
RSpec 不会加载 config.ru
因为它不知道它是什么。您需要模拟 Web 服务器将执行的操作。这近似于机架测试样式设置。将 Rack::Test::API
包含在您的规格中将允许您将 rack-test 与 rackup 文件一起使用。
module Rack::Test::API
include Rack::Test::Methods
def app
@app ||= Rack::Builder.parse_file('path/to/config.ru').first
end
end
我正在使用 rack-contrib
gem 从 HTTP_ACCEPT_LANGUAGE header 设置语言环境,所以我的 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
消息。
RSpec 不会加载 config.ru
因为它不知道它是什么。您需要模拟 Web 服务器将执行的操作。这近似于机架测试样式设置。将 Rack::Test::API
包含在您的规格中将允许您将 rack-test 与 rackup 文件一起使用。
module Rack::Test::API
include Rack::Test::Methods
def app
@app ||= Rack::Builder.parse_file('path/to/config.ru').first
end
end