Ruby on rails 黄瓜vs.RSpec

Ruby on rails 黄瓜vs.RSpec,ruby-on-rails,rspec,cucumber,Ruby On Rails,Rspec,Cucumber,我想开始潜入BDD。我以前从来没有使用过TDD,现在是 不确定我是否应该先学习RSpec,然后再跳到Cucumber 或者直接用黄瓜 我一直在网上读到关于这两个方面的文章,在我看来 黄瓜可能是RSpec的“替代品”。我是对的还是应该 一个用于某些东西,另一个用于其他东西?是的,cucumber和rspec都用于BDD 我个人更喜欢黄瓜,但有些人觉得它令人讨厌,而且 更喜欢 他们的测试应该少用英语,多用代码。不过,这两种方法都是很好的工具。Cucumber和RSpec都用于BDD,但用途不同 可以

我想开始潜入BDD。我以前从来没有使用过TDD,现在是 不确定我是否应该先学习RSpec,然后再跳到Cucumber 或者直接用黄瓜

我一直在网上读到关于这两个方面的文章,在我看来 黄瓜可能是RSpec的“替代品”。我是对的还是应该
一个用于某些东西,另一个用于其他东西?

是的,cucumber和rspec都用于BDD

我个人更喜欢黄瓜,但有些人觉得它令人讨厌,而且 更喜欢
他们的测试应该少用英语,多用代码。不过,这两种方法都是很好的工具。

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

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

Given I'm not logged in
When I login
Then I should be on the user dashboard page
很宽,但是引擎盖下面有很多东西。Cucumber有助于确保涵盖所有这些高级特性和功能(例如,当您的用户登录时,他们会被带到正确的页面)。但它不是测试低级代码的好工具。这就是RSpec的作用

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

这是一个简单的示例,但这是使用RSpec(在spec/models/user_spec.rb文件中)测试的类型。这不是你用黄瓜测试的东西

因此,底线是:

用于从用户角度描述广泛功能的更高级别测试

RSpec用于描述类、方法、模型、控制器等实际工作方式的详细信息的低级测试

这篇文章实际上很好地解释了何时从一种工具过渡到另一种工具:

我还建议使用“”和“”作为工具和测试的良好资源


顺便说一句,不要把事情搞混了,但实际上你也可以用RSpec来处理高层事务。但其中一些决定取决于你喜欢哪种工具,或者你是否与一个非技术客户合作,而Cucumber在描述场景方面的用户友好语法会让你受益匪浅。

肯顿在这方面做得很好。以下是RSpec和Cucumber的作者对此的看法:

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

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