ruby-on-rails - Rack rSpec Controller Tests with Rack Middleware 问题

标签 ruby-on-rails rspec rack

我在使用 rSpec 的 Controller API 进行测试时遇到了很大的麻烦。现在我正在使用中间件身份验证解决方案 ( Warden ),当我运行规范时,中间件添加的代理不存在,所有身份验证测试都抛出 NilPointerException在这个地方。

rSpec 似乎并没有故意将中间件添加到最终的应用程序中,我想知道是否有一种方法可以对 rSpec 进行猴子补丁以实现这一目标。

我已经用 Cucumber 测试了整个过程,但是这是对旧身份验证版本的重构,并且有几个 Controller 测试依赖于身份验证逻辑才能工作。

提前致谢。

最佳答案

看起来 Rails 2.x 的 rSpec Controller API 并没有真正在 Controller 调用上使用 Rack,所以这是不可能的。但是,David Chelimsky 指出了一个(未经证实的)解决方案。我会将他给我的答案放在 rSpec 用户邮件列表中。

Controller specs don't go through rack in rails 2, so not really.

There are integration specs, which wrap the rails integration test API so you can do anything you can do in a rails integration test. Just move the files over to spec/integration, convert the requests from "get :index" to "get 'path/to/index'"and you should be pretty much good to go.

Let us know how that works out.

Cheers, David

我最终在身份验证逻辑方法上模拟了 ApplicationController 以执行虚拟操作以使我的规范运行,我在 David 指出建议之前就这样做了,所以我不知道这是否有效。无论哪种方式,我都希望它能帮助处于相同情况的任何其他开发人员。

关于ruby-on-rails - Rack rSpec Controller Tests with Rack Middleware 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225852/

相关文章:

ruby-on-rails - Pow.cx Rails Assets 未加载(IOError : Closed Stream)

html - 使文本区域不可调整大小

javascript - 使用 simple_form 基于单选选择隐藏/显示字段

jquery - jRails 是 Rails + jQuery 必须的吗?

ruby-on-rails - rake 分贝 :test:prepare in Rails 3 app fails with file not found

ruby-on-rails - 唯一性验证测试的外键约束问题

ruby-on-rails - 如何制作具有多个参数的rspec?

ruby-on-rails - 无法访问 RSpec 请求规范中的响应变量

sinatra - 如何使用 Rack/保护在 Sinatra 中指定源白名单选项

ruby-on-rails-3 - Heroku 上缓慢的 postgres 查询不会被 Rack 超时中断