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

标签 ruby-on-rails rspec rspec-rails

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

来自功能规范文档:

Feature specs are high-level tests meant to exercise slices of functionality through an application. They should drive the application only via its external interface, usually web pages.

对于请求规范:

Request specs provide a thin wrapper around Rails' integration tests, and are designed to drive behavior through the full stack, including routing (provided by Rails) and without stubbing (that's up to you). With request specs, you can:

  • specify a single request
  • specify multiple requests across multiple controllers
  • specify multiple requests across multiple sessions

我知道功能规范使用 Capybara并且要求规范没有。但这几乎不值得不同的概念。

最佳答案

概念上的区别在于,您通常正在测试用户故事,并且所有交互都应通过用户界面驱动。这就是 Capybara 的用武之地。请求规范仍在测试应用程序的行为,并且不具有验收测试所具有的可读性。因此,改进了验收测试的语法。

技术差异包括请求规范包含 Rails 集成测试,而功能规范则不然。这意味着对于请求规范,您可以使用 get、post、put、delete 和 assert 方法来响应响应。根据功能规范,您应该通过浏览器驱动所有交互,并使用诸如访问和断言页面之类的方法。

我建议阅读 github 上 rspec-rails 源代码中的 feature_spec.feature。

关于ruby-on-rails - RSpec:功能和请求规范之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15173946/

相关文章:

ruby-on-rails - 如何使用 rspec 为序列化器编写单元测试

sql - Rails 3 中单个记录的多个外键?

ruby-on-rails - 为什么 Rails 的 "errors.full_messages"不替换属性和消息变量?

ruby-on-rails - 除非设置了标志,否则默认情况下不运行规范

ruby-on-rails - RSpec:如何测试静态方法被调用但阻止它实际运行?

ruby-on-rails - RSpec 应用程序助手测试 : Undefined local variable or method `helper`

ruby-on-rails-3 - Rails 3 - 通过 rspec 正确测试 PUT 方法

ruby-on-rails-3 - 为什么 rspec-rails 会跳过中间件?

ruby-on-rails - 在 ruby​​ 假时间中四舍五入到最接近的半小时或小时?

ruby-on-rails - 虚拟 ruby 开发环境