菠菜与黄瓜对于轨道中的BDD

我是从BDD开始的。 想知道从黄瓜或菠菜开始哪个更好。 我的印象是菠菜是新的。 看这里

我应该从哪一开始。 标准是 –

  1. 全面支持。
  2. 灵活使用
  3. 第三方工具和API集成。

再一次,它可能是新手的无知问题:水豚在哪里适合图片。

在某些情况下,我一直是Cucumber的长期用户,但从第一天开始就一直希望它是菠菜。 我将所有项目切换到Spinach尽管它有缺点,因为它使用了新的,热门的PORO技术(Plain Old Ruby Objects;)。 现在我可以扩展我想要的步骤,因为它只是Ruby。

在撰写本文时,要回答您的问题:

  1. 全面支持。

黄瓜

菠菜仍在开发一些function,包括“背景”块,我目前正试图让它识别表格。

  1. 灵活使用

菠菜

黄瓜从一开始就鼓励糟糕的步骤设计,IMO。 如果您创建特定于function的步骤,您将在以后浏览它们,如果您创建可重用的全局步骤,您的function定义将是冗长,通用和无聊的阅读。 我听说过人们声称他们可以成功地走平衡,并且足够具体,但仍然有可重复使用的步骤; 我认为自己非常精通,如果我不能可靠地做到这一点,那就太难了。

  1. 第三方工具和API集成

黄瓜,假设子弹点可以解释为社区。

如果它真的是“第三方工具和API集成”,那么Spinach支持capybara和rspec,这是你所追求的大部分内容。 Cucumber拥有第三方可重复使用的步骤库,但正如我之前提到的那样,我认为这很糟糕。 关于第三方和集成,即使它还没有,你真的不能比普通的旧ruby对象更好。

水豚在哪里适合这幅画

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


总的来说,你可能最好得到一本rspec /黄瓜书并按照它说的做。 请注意,测试需要一段时间才能擅长,所以不要止步于此。 也许在这个过程的某个地方查看Spinach; 如果你喜欢Cucumber,你会发现你真的很喜欢菠菜。

免责声明:我是菠菜捣蛋鬼。

如果您从BDD开始,我强烈推荐两本书:

  • RSpec书
  • 黄瓜书

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

话虽如此,Cucumber有一个庞大的社区,但很多事情也适用于Spinach,因为他们的共同点是Gherkin。

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

我想要你,你可以看一下spinach-rails-demo ,看看一切是如何运作的。

如果你坚持使用Cucumber并且你不想要全局步骤,你可以通过用某种方案ID标记步骤来解决这个问题:

# 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的外观非常接近。 没有正则表达式的论点!

 # 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上发布了更多有关变通方法的信息。

我不能真正代表菠菜,因为我从来没有使用它,但Cucumber肯定有大量的社区支持,有大量的外部库。

Capybara允许您轻松测试Web应用程序

 When I fill in "username" with "foo" And I click on "login" Then I should see "enter your password"