我正在尝试在应用程序上设置功能测试。 我决定安装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']
上传递值,但不在测试环境上传递值。
我还需要设置什么?
谢谢!
答案 0 :(得分:1)
REQUEST_URI不是机架规格的一部分,这意味着不能保证对其进行设置,并且不应在中间件中使用它。相反,您应该使用机架规格中指定的PATH_INFO,QUERY_STRING等内容,因此应该可用-https://github.com/rack/rack/blob/master/SPEC