代码之家  ›  专栏  ›  技术社区  ›  Roman Gonzalez

机架rSpec控制器测试与机架中间件问题

  •  2
  • Roman Gonzalez  · 技术社区  · 16 年前

    我在测试rSpec的控制器API时遇到了很大的困难。现在我正在使用中间件身份验证解决方案( Warden ),当我运行规范时,中间件添加的代理不在那里,所有的身份验证测试都在抛出 NilPointerException 到处都是。

    看来rSpec并不是有意将中间件添加到最终应用程序中,我想知道是否有办法通过monkey patch rSpec来实现这一点。

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

    2 回复  |  直到 12 年前
        1
  •  3
  •   Community Mohan Dere    6 年前

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

    控制器规格在Rails2中并没有通过机架,所以实际上并没有。

    有一些集成规范包装了rails集成测试API 因此,您可以在rails集成测试中执行任何操作。只是 将文件移到spec/integration,从 “get:index”到“get'path/to/index'”,您应该 很好。

    让我们知道结果如何。

    最后,我在身份验证逻辑方法上模仿ApplicationController来做一些虚假的事情,以使我的规范运行,我在David提出建议之前做了这件事,所以我不知道这是否有效。无论哪种方式,我都希望它能在同样的情况下帮助其他开发者。

        2
  •  0
  •   keeran    16 年前

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

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

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