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

我正在努力了解牛排的必要性。 我得到它像Cucumber,除了你可以使用纯ruby而不是像Cucumber一样将你的英语语言规范映射到ruby,但是它说它主要是在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这样的复杂function呢? 英语语言接受规范描述是唯一的价值主张,还是我错过了其他什么?

谢谢

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

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

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

  • 除了其他方面, Rake支持单独运行您的验收规范。

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

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

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

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

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

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

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

由于您排除黄瓜并使用rSpec(利益相关者/非技术分析师通常称为DSL),因此更接近于整合测试:

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

我们正在逐步淘汰牛排,转而采用rSpecs原生’请求’和’function’规格,这些都是开箱即用的。 可能值得检查一下。

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