我正在帮助将一个Rails2应用程序迁移到Rails4,并且我已经在项目接近尾声时参与进来了。Rails 2应用程序没有测试。
显然,我们需要测试来确保Rails4应用程序正常工作,但我们不想用Rails2语法编写测试,然后经历将测试迁移到Rails4的痛苦。我们目前在其他项目中使用RSpec。
我想在Rails4中编写它们作为功能测试,并使用Capybara.app_host将请求重新路由到正在运行的Rails2应用程序实例。问题是,应用程序是一个API,Capybara不是用来测试API的。
有没有办法将RSpec控制器测试路由到另一个服务器实例?
发布于 2016-09-26 21:25:22
再次感谢你的评论。
我想我们已经有计划了。我们试图让cucumber和cucumber-api-step在我们的旧项目上运行,但我们意识到要让旧的gem版本很好地协同工作将是一项艰巨的工作。
我现在尝试的解决方案是使用RSpec 1.3,创建一个spec/requests文件夹并向其中添加控制器测试。
我是从http://matthewlehner.net/rails-api-testing-guidelines/的一篇文章中得到这个想法的--谢谢马修。直到RSpec 2我才在文档中看到请求规范,所以我们使用integrate_views使我们的控制器测试非常接近集成测试,然后检查控制器返回的主体的内容。
至于语法,也许我们可以包含一个expect(..)帮助器来返回一个从Rails 2项目中的#to方法调用#should的对象,并在我们移植Rails 4项目时删除它。
https://stackoverflow.com/questions/37281033
复制相似问题