Rspec feature specs和request specs之间的概念差异是什么?
来自功能规格文档:
功能规范是用于执行功能切片的高级测试 通过申请。他们应该只通过它驱动应用程序 外部界面,通常是网页。
对于请求规格:
请求规范为Rails的集成测试提供了一个薄的包装,并且是 旨在通过完整堆栈驱动行为,包括路由 (由Rails提供)并且没有存根(这取决于你)。 根据请求规范,您可以:
- 指定单个请求
- 跨多个控制器指定多个请求
- 跨多个会话指定多个请求
我知道功能规格使用Capybara而请求规格则不然。但这几乎不值得采用不同的概念。
答案 0 :(得分:141)
概念上的区别在于您通常会测试用户故事,并且所有交互都应通过用户界面进行。这就是Capybara的用武之地。一个请求规范仍然在测试你的应用程序的行为,并没有预期接受测试会有的可读性。因此,功能就是改进了验收测试的语法。
技术差异包括请求规范包装Rails集成测试,而功能规格则没有。这意味着使用请求规范,您可以使用get,post,put,delete和assert方法来响应。使用功能规范,您应该通过浏览器驱动所有交互,并使用访问和断言等方法对页面进行操作。
我建议在github上的rspec-rails源代码中阅读feature_spec.feature。我希望这会有所帮助。