RSpec: 特性和请求规范的区别是什么?

Rspec 的 功能规格request specs在概念上有什么不同?

特性说明文档:

特性规范是高级测试,用于测试功能片段 他们应该只透过其网上服务来驱动申请 外部界面,通常是网页。

还有要求说明:

Request specs provide a thin wrapper around Rails' integration tests, and are designed to drive behavior through the full stack, including routing (由 Rails 提供)和没有存根(这取决于您)。 通过请求规格,您可以:

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

我知道特性规范使用 水豚,而请求规范不使用 水豚,但是这几乎不值得不同的概念。

19733 次浏览

概念上的区别在于,您通常是在测试一个用户故事,所有的交互都应该通过用户界面来驱动。这就是水豚的用武之地。请求规范仍然在测试应用程序的行为,并且没有验收测试所期望的可读性。因此,改进的验收测试语法具有特性。

技术差异包括请求规范包装 Rails 集成测试,而特性规范不包装 Rails 集成测试。这意味着对于请求规范,您可以使用方法 get、 post、 put、 delete 以及针对响应的断言。使用特性规格说明,你应该通过浏览器驱动所有的交互,并使用诸如访问和断言等方法对页面进行处理。

我建议您阅读 github 上 rspec-ails 源代码中的 Feature _ spec. Feature。