Функциональные тесты, не передающие REQUEST_URI промежуточному программному обеспечению с RSpec и Capybara - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь настроить функцию тестирования приложения.Я решил установить Capybara и таким образом добавил его в Gemfile моего проекта:

group :test do
  gem "capybara"
end

Я объявляю свои тесты в папке spec/feature, и тест удается выполнить:

require "rails_helper"

feature 'My Feature' do
  scenario 'User visits feature page' do
    visit '/my-feature'
    expect(page).to have_text('Stuff')    
  end
end

Проблема: у меня есть промежуточное ПО URL, которое не обнаруживает флаг env['REQUEST_URI], и поэтому мой тест не пройден:

class UrlNormalizationMiddleware

  def initialize(app)
    @app = app
  end


  def call(env)
    uri_items = env['REQUEST_URI'].split('?')
    ...
    @app.call(env)
  end
end

Фактическое приложение загружается и передает значения на env['REQUEST_URI'], но не натестовая среда.

Что-нибудь еще, что мне нужно настроить?

Спасибо!

1 Ответ

0 голосов
/ 29 декабря 2018

REQUEST_URI не является частью спецификации стойки, что означает, что она не гарантируется, и вы не должны использовать ее в промежуточном программном обеспечении.Вместо этого вы должны использовать такие вещи, как PATH_INFO, QUERY_STRING и т. Д., Которые указаны в спецификации стойки и поэтому должны быть доступны - https://github.com/rack/rack/blob/master/SPEC

...