Rspec的feature specsrequest specs在概念上有什么不同?

从功能规范文档中:

功能规格是高级测试,旨在测试功能的各个部分

对于要求规格:

请求规范为Rails的集成测试提供了一个薄薄的包装,并且

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

我知道功能规格使用Capybara,而请求规格不使用.但这几乎不值得有不同的概念.

推荐答案

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

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

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

Ruby-on-rails相关问答推荐

如何仅在所有配置/初始化器加载后才加载gem的Railites?

带有rails 7.1的Lightbox2未初始化

仅在两个子域间共享Rails cookies,并为所有其他子域使用单独的cookie

Ruby on Rails form_with 不显示错误,卡在服务器端

如何不需要rails/all?

如何获取 Rails 表单构建器将为某个字段生成的 HTML名称属性?

ActiveRecord 包括.指定包含的列

如何在 YAML 中声明带有单引号和双引号的字符串?

rails 3,简单数组的Kaminari分页

是否可以在 Rails 集成测试或规范中指定用户代理?

在 Windows 上安装特定的 Ruby on Rails 版本

Rails:使用 link_to 创建不带 href 的链接

如何编写 Capybara 断言来判断按钮的存在及其启用或禁用状态?

如何对这个哈希数组进行分组?

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

如何在 Ruby 中搜索数组?

Ruby 1.9.2 和 Rails 3 无法打开 rails 控制台

如何测试也定义为辅助方法的 ApplicationController 方法?

何时在 Ruby on Rails 中使用 lambda?

在 Rails 3 中突出显示当前页面的最佳方法? -- 有条件地将css类应用于链接