RSpec:function和请求规格有什么区别?

Rspec的function规格和请求规格之间的概念区别是什么?

从function规格文档:

function规格是高级testing,旨在通过应用程序来执行function片段。 他们只能通过外部接口(通常是网页)来驱动应用程序。

而对于请求规格:

Request specs提供了Rails集成testing的一个简单的包装,并且被devise为通过完整的堆栈来驱动行为,包括路由(由Rails提供)和不存在(这取决于你)。 根据请求规格,您可以:

  • 指定一个请求
  • 在多个控制器中指定多个请求
  • 在多个会话中指定多个请求

我知道function规格使用Capybara和请求规格不。 但是这几乎不可能有不同的概念。

概念上的区别是,你通常testing一个用户故事,所有的交互应该通过用户界面来驱动。 这就是Capybara进来的地方。一个请求规范仍然在testing你的应用程序的行为,并没有一个验收testing可以预期的可读性。 所以,function在于validationtesting的改进语法。

技术差异包括请求规范包装Rails集成testing,而function规格不包括。 这意味着您可以使用方法get,post,put,delete和assert来响应请求规范。 通过function规格,您应该通过浏览器驱动所有交互,并使用访问和断言页面方法。

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