【发布时间】:2018-12-27 00:21:43
【问题描述】:
我正在尝试在应用程序上设置功能测试。 我决定安装 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'] 上加载并传递值,但不在测试环境中。
还有什么我需要设置的吗?
谢谢!
【问题讨论】:
-
您在哪里设置 REQUEST_URI 环境变量的值?如果您假设驱动程序会设置,那么我需要知道您与 Capybara 一起使用的驱动程序。 rack-test 特别没有设置 REQUEST_URI,因为它没有在机架标准中定义 - 请参阅 github.com/rack-test/rack-test/issues/26
-
我实际上并没有设置它,我读过类似的东西。这意味着我需要在某个地方设置它,对吗?我应该在测试中创建一个存根来设置它吗?我怎么知道我在 Capybara 上使用的是哪个驱动程序?老实说,我刚刚安装了 capybara 并像往常一样继续使用 rspecs。如果我遗漏了什么,请告诉我(如果这是问题,请确保您回答,以便我将您的答案标记为正确)。
标签: ruby-on-rails ruby rspec capybara