gpt4 book ai didi

ruby-on-rails-3 - 为什么 rspec-rails 会跳过中间件?

转载 作者:行者123 更新时间:2023-12-05 01:48:19 27 4
gpt4 key购买 nike

我有一个 Rails 应用程序 (3.2.12),我想通过 HTTP Accept-Language header 添加区域设置切换。

我为实现这一目标所做的工作:

我将 rack-contrib 添加到我的 Gemfile 中:

gem 'rack-contrib', require: 'rack/contrib'

跑了 bundle install ,将中间件添加到我的 config/application.rb :

config.middleware.use Rack::Locale

并检查请求环境我的 Controller :

puts request.env.keys.select{|v| v=~/rack/ }

我运行的规范是一个 Controller 规范,它有 render_views

我的问题:

没有 rack.locale请求环境中的 key 。我仔细检查了 rake middlware , 它列出了 Rack::Locale接近尾声,就在run MyApp::Application.routes之前.

经过一些调试我发现当我运行时中间件从不被调用

rspec spec/controllers/authentication_controller_spec.rb

但是:script/rails s thin 中运行相同的代码在请求环境中给我更多的键,即:

rack.request.cookie_string
rack.locale
rack.request.query_string
rack.request.query_hash

所以,我想问题是:为什么 RSpec 拒绝选择 Rack 中间件?

最佳答案

Controller 规范不通过堆栈,它们几乎直接调用 Controller 本身。您可能希望为此使用 Rspec 的请求类型测试。

关于ruby-on-rails-3 - 为什么 rspec-rails 会跳过中间件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15026571/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com