黄瓜与RSpec

use*_*586 25 rspec ruby-on-rails cucumber

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

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

小智 71

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

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

Given I'm not logged in
When I login
Then I should be on the user dashboard page
Run Code Online (Sandbox Code Playgroud)

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

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

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

所以底线是:

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

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

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

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

我还推荐" RSpec Book "和" Rails Test Prescriptions ",以获得有关工具和测试的一般资源.

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


Ask*_*ker 8

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

我个人更喜欢Cucumber,但是有些人发现它很不合适,并且更喜欢他们的测试更少的英语,更多的代码.但两者都是很好的工具.