RSpec:功能和请求规范之间有什么区别?

时间:2013-03-02 11:29:08

标签: ruby-on-rails rspec rspec-rails

Rspec feature specsrequest specs之间的概念差异是什么?

来自功能规格文档:

  

功能规范是用于执行功能切片的高级测试   通过申请。他们应该只通过它驱动应用程序   外部界面,通常是网页。

对于请求规格:

  

请求规范为Rails的集成测试提供了一个薄的包装,并且是   旨在通过完整堆栈驱动行为,包括路由   (由Rails提供)并且没有存根(这取决于你)。   根据请求规范,您可以:

     
      
  • 指定单个请求
  •   
  • 跨多个控制器指定多个请求
  •   
  • 跨多个会话指定多个请求
  •   

我知道功能规格使用Capybara而请求规格则不然。但这几乎不值得采用不同的概念。

1 个答案:

答案 0 :(得分:141)

概念上的区别在于您通常会测试用户故事,并且所有交互都应通过用户界面进行。这就是Capybara的用武之地。一个请求规范仍然在测试你的应用程序的行为,并没有预期接受测试会有的可读性。因此,功能就是改进了验收测试的语法。

技术差异包括请求规范包装Rails集成测试,而功能规格则没有。这意味着使用请求规范,您可以使用get,post,put,delete和assert方法来响应。使用功能规范,您应该通过浏览器驱动所有交互,并使用访问和断言等方法对页面进行操作。

我建议在github上的rspec-rails源代码中阅读feature_spec.feature。我希望这会有所帮助。