我在使用 rSpec 的控制器 API 进行测试时遇到了很大的麻烦。现在我正在使用中间件身份验证解决方案(Warden),当我运行规范时,中间件添加的代理不存在,所有身份验证测试都NilPointerException
在到处乱扔 s。
rSpec 似乎不是故意将中间件添加到最终应用程序中,我想知道是否有办法对 rSpec 进行猴子补丁以实现这一目标。
我已经用黄瓜测试了整个事情,但是这是对旧身份验证版本的重构,并且有几个控制器测试依赖于身份验证逻辑才能工作。
提前致谢。
我在使用 rSpec 的控制器 API 进行测试时遇到了很大的麻烦。现在我正在使用中间件身份验证解决方案(Warden),当我运行规范时,中间件添加的代理不存在,所有身份验证测试都NilPointerException
在到处乱扔 s。
rSpec 似乎不是故意将中间件添加到最终应用程序中,我想知道是否有办法对 rSpec 进行猴子补丁以实现这一目标。
我已经用黄瓜测试了整个事情,但是这是对旧身份验证版本的重构,并且有几个控制器测试依赖于身份验证逻辑才能工作。
提前致谢。
Rails 2.x 的 rSpec Controller API 似乎并没有真正在控制器调用上使用 Rack,所以这是不可能的。然而,David Chelimsky 指出了一个(未经证实的)解决方案。我会将他给我的答案放在 rSpec-user 邮件列表中。
控制器规格不通过导轨 2 中的机架,所以不是真的。
有一些集成规范,它包装了 rails 集成测试 API,因此您可以在 rails 集成测试中做任何您可以做的事情。只需将文件移动到规范/集成,将请求从“get :index”转换为“get 'path/to/index'”,你应该会很好。
让我们知道结果如何。
干杯,大卫
我最终在身份验证逻辑方法上模拟了 ApplicationController 来做一些虚拟的事情,以使我的规范运行,我在得到 David 指出的建议之前就这样做了,所以我不知道这是否有效。无论哪种方式,我希望它可以帮助任何其他处于相同情况的开发人员。
这篇关于相关问题的帖子可能会有所启发,并最终导致在 rSpec 配置中指定中间件组件的解决方案(我希望!)
https://rspec.lighthouseapp.com/projects/5645/tickets/963-request-is-nil#ticket-963-14
它对您的特定 Rails2 问题并没有真正的帮助,但是这个查询在“rspec 中间件”中排在首位,因此希望能帮助其他在尝试 Rails3 beta 及更高版本时遇到该问题的人。