首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >rails中BDD的菠菜与黄瓜

rails中BDD的菠菜与黄瓜
EN

Stack Overflow用户
提问于 2011-11-03 14:19:14
回答 4查看 5.4K关注 0票数 18

我开始使用BDD。想知道从黄瓜还是菠菜开始哪个更好。我的印象是,菠菜是新出的街区。Look here

我应该从哪一个开始。标准将是-

跨board.

  • Flexibility的
  1. 支持使用
  2. 第三方工具和API集成。

同样,对于新手来说,这可能是一个愚蠢的问题:水豚属于哪一类?

EN

回答 4

Stack Overflow用户

发布于 2011-11-17 17:31:30

在某些情况下,我是黄瓜的长期用户,但从第一天起我就一直希望它是菠菜。尽管有一些缺点,我还是把我的所有项目都换成了Spinach,因为它使用了新的、热的、现成的PORO技术(Plain Old Ruby Objects ;)。现在我可以随心所欲地扩展我的步骤,因为它只是Ruby。

为了回答你的问题,在写这篇文章时:

全面支持

黄瓜

Spinach还在开发一些功能,包括“背景”块,我目前正在尝试让它识别表格。

  1. 使用

的灵活性

菠菜

黄瓜从一开始就鼓励糟糕的步骤设计,国际海事组织。如果您创建特定于功能的步骤,您会在以后遇到它们,而如果您创建可重用的全局步骤,您的功能定义将是冗长、通用和乏味的阅读。我听说人们声称他们可以成功地达到平衡,并且足够具体,但仍然有可重用的步骤;我认为自己足够精通,如果我不能可靠地做到这一点,那就太难了。

  1. 第三方工具和API集成

黄瓜,假设要点可以被解释为社区。

如果你真正想要的是“第三方工具和API集成”,那么Spinach支持水豚和rspec,这就是你想要的。Cucumber有第三方可重用的步骤库,但正如我之前提到的,我认为这很糟糕。关于第三方和集成,即使它还不存在,你也不能得到比普通的老ruby对象更好的东西了。

图中水豚的位置在哪里?

水豚是你网站的测试界面,也就是测试鼠标和键盘。你可以在控制台中启动它并驱动你的应用程序,但这会变得重复。Cucumber/Spinach (或rspec/test-unit/minitest)都可以使用水豚自动化测试你的应用。人们更喜欢黄瓜/菠菜,因为它们可以帮助你走出代码,让你像用户一样思考。

总而言之,你最好买一本rspec/cucumber书,然后照它说的做。请注意,测试需要一段时间才能熟练掌握,所以不要止步于此。如果你喜欢吃黄瓜,你可能会发现你真的喜欢吃菠菜。

票数 20
EN

Stack Overflow用户

发布于 2011-11-04 17:04:26

免责声明:我是一名菠菜管理员。

如果你开始学习BDD,我强烈推荐两本书:

我认为学习所有的BDD和TDD过程(从外到内等)是很重要的。然后选择你觉得更舒服的工具。

话虽如此,黄瓜有一个巨大的社区,但许多东西也适用于菠菜,因为它们的共同点是小黄瓜。

至于使用的灵活性,我想说两者都非常灵活,但我(显然)更喜欢每个特性,因为它只是一个Ruby类,你可以在其中包含模块,继承其他类等等(这也适用于API集成)。

如果你想,你可以看看spinach-rails-demo,看看每件事是如何工作的。

票数 16
EN

Stack Overflow用户

发布于 2012-08-08 16:57:25

如果您坚持使用Cucumber,并且不想要全局步骤,则可以通过使用某种类型的场景ID标记步骤来解决此问题:

代码语言:javascript
复制
# features/1_greetings.feature
Scenario: Formal greeting
  Given I have an empty array [#1]
  And I append my first name and my last name to it [#1]
  When I pass it to my super-duper method [#1]
  Then the output should contain a formal greeting [#1]

#1方案id可以是任何值。我喜欢使用票号作为将来的参考。

然后,可以将所有步骤放入一个步骤定义文件中。它非常接近于Spinach::FeatureSteps的外观。也没有正则表达式参数!

代码语言:javascript
复制
# features/step_definitions/1_greetings.rb
Given 'I have an empty array [#1]' do
  #...
end

And 'I append my first name and my last name to it [#1]' do
  #...
end

When 'I pass it to my super-duper method [#1]' do
  #...
end

Then 'the output should contain a formal greeting [#1]' do
  #...
end

我在github上发布了更多关于解决方法的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7990979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档