9

我试图了解对牛排的需求。我知道它就像 Cucumber,除了你可以使用纯 ruby​​ 而不是像 Cucumber 那样将你的英语语言规范映射到 ruby​​,但它说它主要在 RSpec DSL 周围添加一个包装器,并让你使用它

取自:http: //jeffkreftmeijer.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 这样的复杂功能呢?英语接受规范描述是唯一的价值主张,还是我错过了其他东西?

谢谢

4

2 回答 2

19

从技术上讲,Steak 只添加了三件事:

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

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

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

您可以将 Steak 视为 RSpec 的最小扩展。但比技术更重要的是与 Steak 相关的非技术方面:

  • 它为使用 RSpec 进行验收 BDD提供了一个名称。说你使用 Steak 比解释你练习什么类型的测试要短。

  • 它提供了一个社区(邮件列表、wiki、twitter 帐户……),由开发人员进行这种特殊形式的测试、分享经验、问题和最佳实践。

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

于 2011-01-23T11:49:22.553 回答
2

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

例如,'acceptance' 目录意味着您正在使用 steak 进行验收测试,这种情况很少发生,通常也是您使用 Steak 而不是黄瓜的原因。

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

由于您排除了 cucumber 并使用 rSpec,它通常被利益相关者/非技术分析师阅读为 DSL,更适合的可能是集成测试:

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

我们正在逐步淘汰 steak,取而代之的是 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

于 2013-04-06T02:20:16.673 回答