【问题标题】:Rack rSpec Controller Tests with Rack Middleware issue带有机架中间件问题的机架 rSpec 控制器测试
【发布时间】:2011-01-14 14:44:13
【问题描述】:

我在使用 rSpec 的控制器 API 进行测试时遇到了很大的麻烦。现在我正在使用中间件身份验证解决方案(Warden),当我运行规范时,中间件添加的代理不存在,所有身份验证测试都在到处乱扔NilPointerExceptions。

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

我已经用黄瓜测试了整个东西,但是这是对旧身份验证版本的重构,并且有几个控制器测试依赖于身份验证逻辑才能工作。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails rspec rack


    【解决方案1】:

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

    控制器规格不通过导轨 2 中的机架,所以不是真的。

    有一些集成规范,它封装了 rails 集成测试 API 所以你可以做任何你可以在 Rails 集成测试中做的事情。只是 将文件移至规范/集成,将请求从 "get :index" 到 "get 'path/to/index'" 你应该差不多 很好。

    让我们知道结果如何。

    干杯, 大卫

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

    【讨论】:

      【解决方案2】:

      这篇关于一个相关问题的帖子可能会有所启发,并最终导致在 rSpec 配置中指定中间件组件的解决方案(我希望!)

      https://rspec.lighthouseapp.com/projects/5645/tickets/963-request-is-nil#ticket-963-14

      它对您的特定 Rails2 问题并没有真正帮助,但此查询在“rspec 中间件”中排在首位,因此希望能帮助其他在尝试 Rails3 beta 及更高版本时遇到该问题的人。

      【讨论】:

        猜你喜欢
        • 2014-04-21
        • 1970-01-01
        • 2011-08-04
        • 2018-05-01
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 2019-02-16
        • 2015-03-07
        相关资源
        最近更新 更多