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