黄瓜与RSpec

时间:2011-11-29 06:26:07

标签: ruby-on-rails rspec cucumber

我想开始潜入BDD。我以前从未使用过TDD 不确定我是否应该从学习RSpec开始然后跳到Cucumber 或者直接使用Cucumber。

我一直在互联网上阅读这两本书,在我看来 黄瓜可能是RSpec的“替代品”。我是对还是应该 一个用于某些事情而另一个用于其他事物?

3 个答案:

答案 0 :(得分:71)

Cucumber和RSpec都用于BDD,但有不同的用途。

将Cucumber视为通过与Web浏览器的交互从用户的角度描述发生的事情。所以你可以采取以下步骤:

Given I'm not logged in
When I login
Then I should be on the user dashboard page

相当广泛,但那里有很多内容。黄瓜有助于确保涵盖所有这些高级特性和功能(例如,当您的用户登录时,它们将被带到正确的页面)。但它不是测试低级代码的好工具。这就是RSpec的用武之地。

参加上面的登录示例。您的用户可能使用电子邮件地址或用户名登录。您可能希望确保电子邮件地址有效或用户名是一定长度......或者他们用来登录的东西是唯一的。您可以在用户模型中通过验证执行此操作。

这是一个简单的例子,但这是你使用RSpec测试的东西(在你的spec / models / user_spec.rb文件中)。这是你使用Cucumber测试的东西。

所以底线是:

从用户的角度来看,描述广泛功能的高级测试的黄瓜

用于较低级别测试的RSpec,描述您的类,方法,模型,控制器等应如何实际工作的详细信息。

这篇文章实际上很好地解释了何时从一个工具转换到另一个工具:

http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/

我还建议使用“The RSpec Book”和“Rails Test Prescriptions”来获取有关工具和测试的一般资源。

P.S。 - 不要混淆事情,但你实际上也可以使用RSpec作为高级别的东西。但是,其中一些决定取决于您更喜欢哪种工具,或者您是否与非技术客户合作,这些客户将从Cucumber的用户友好语法中获益更多,以便描述方案。

答案 1 :(得分:8)

是的,黄瓜和rspec都用于BDD。

我个人更喜欢Cucumber,但是有些人发现它很有价值,而且 比较喜欢 他们的测试是英语更少,代码更多。但两者都是很好的工具。

答案 2 :(得分:3)

Kenton在这个答案上做得很好。以下是RSpec和Cucumber的作者如何看待它:

  

我们使用Cucumber来描述应用程序的行为,并使用RSpec来描述对象的行为。

     

虽然我们使用Cucumber专注于高级行为并使用RSpec   专注于更细粒度的行为,每个行为都可以用于   目的