2011-11-29 135 views
25

我想开始潜入BDD。我以前从未使用过TDD,并且不知道是否应该从学习RSpec开始,然后跳转到Cucumber 或者直接使用Cucumber。黄瓜与RSpec

我一直在互联网上阅读关于两者,在我看来, 黄瓜可能是RSpec的'替代品'。我是对的还是应该是 一个用于某些事物,另一个用于其他人?

+0

http://stackoverflow.com/questions/393622/rspec-vs-cucumber-rspec-stories –

回答

7

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

我个人比较喜欢黄瓜,但有些人觉得它有问题, 宁愿 他们的测试少一些英文,多一些代码。不过,两者都是很棒的工具。

70

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

想象黄瓜描述了从用户的角度来看,通过与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文件中)。这是而不是你要用黄瓜测试的东西。

所以,底线是:

黄瓜用于描述从用户的角度来看

RSpec的观看用于描述如何使你的类,方法,模型,控制器的细节低级别的测试,广泛的功能更高级的测试等应该实际上工作。

这篇文章实际上并解释何时转变,从一个工具到另一个的一个很好的工作:

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

我还建议“The RSpec Book”,并在这两个工具和测试“Rails Test Prescriptions”为良好的资源一般来说。

附: - 不要混淆事物,但实际上也可以将RSpec用于高级别的东西。但是其中的一部分决定是您喜欢哪种工具,或者您是否与非技术客户合作,他们将从Cucumber用于描述方案的用户友好语法中受益更多。

+0

+1为文章链接,这是一个必读。 –

3

肯顿对这个答案做了很好的工作。下面是RSpec和Cucumber的作者如何看到它:

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

虽然我们使用黄瓜专注于高层次的行为和需要Rspec 专注于更细化的行为,每一个都可以用于任何目的 。