除了在Rails测试中使用Capybara和RSpec之外,Steak还能添加什么?

时间:2011-01-23 09:16:35

标签: ruby-on-rails rspec cucumber rspec2 capybara

我正在努力了解牛排的必要性。我得到它像黄瓜,除了你可以使用纯红宝石,而不是像黄瓜一样将你的英语语言规范映射到红宝石, 但它说它主要是在RSpec DSL周围添加一个包装器,并允许你使用

取自:http://jeffkreeftmeijer.com/2010/steak-because-cucumber-is-for-vegetarians/

module Spec::Example::ExampleGroupMethods
  alias scenario example
  alias background before
end

module Spec::DSL::Main
  alias feature describe
end

这就是全部吗?我从例子中可以看出,你仍然在使用Capybara和RSpec匹配器进行繁重的工作。那么为什么不使用Capybara和RSpec而不是在它之上添加像Steak这样的复杂功能呢?英语语言接受规范描述是唯一的价值主张,还是我错过了其他什么?

由于

2 个答案:

答案 0 :(得分:19)

从技术上讲,牛排只增加了三件事:

  • 一些语法糖以别名的形式(场景,背景,功能)提醒开发人员他们正在编写验收规范,而不是常规规范。

  • Rails的一些方便的生成器,可帮助开发人员快速设置新项目或新规范

  • Rake 支持单独运行您的验收规范。

您可以将Steak视为RSpec的最小延伸。但比技术更重要的是与Steak相关的非技术性事物:

  • 它提供名称,用于使用RSpec进行接受BDD。说你使用牛排比解释你练习的测试类型要短。

  • 它提供了一个社区(邮件列表,wiki,Twitter帐户...)开发人员,他们正在进行这种特定的测试形式,分享经验,问题和最佳实践。

我认为牛排不会给任何熟悉RSpec的人增加任何复杂功能,但是如果你这么认为并且你并不真正关心以前的所有事情,那么你根本不需要使用RSpec,你可能会使用Test :: Unit + Capybara更快乐。

答案 1 :(得分:2)

你的预感可能是正确的,而且Steak进一步混淆了rSpec测试命名空间。

例如,“接受”目录暗示您正在使用牛排进行验收测试,这种情况很少发生,通常是您使用牛排而不是黄瓜的原因。

有关更清晰的定义,请参阅:http://en.wikipedia.org/wiki/Acceptance_testing

由于您排除黄瓜并使用rSpec(通常称为DSL,利益相关者/非技术分析师阅读),更接近可能是集成测试:

http://en.wikipedia.org/wiki/Integration_testing

我们正在逐步淘汰牛排,转而采用rSpecs原生'请求'和'功能'规格,这与开箱即用相同。可能值得检查一下。

https://www.relishapp.com/rspec/rspec-rails/docs/request-specs/request-spec https://www.relishapp.com/rspec/rspec-rails/docs/feature-specs/feature-spec