Rails 应用程序可用的测试工具

Testing tools available for Rails application

我是 rails 测试的新手,我 google 发现很少有像这样的测试框架 1. rspec 2.黄瓜 3. 水豚 4. 工厂女工 5.茉莉

默认rails有自己的测试工具。

我需要知道使用什么以及何时使用
功能,单位和 集成测试

以及我们如何自动化测试以便在部署之前它会 运行 我们所有的测试用例?

一定要阅读 Rails 测试最佳实践指南;有大量关于如何测试的书籍、博客文章和 Youtube 视频。但是你的问题的一部分对我来说是一个特别的痛点,所以我也会在这里给出一个简短的答案:这些复杂的工具中哪些值得使用,以及哪些类型的测试?

Rails 社区在测试方面非常庞大,但我个人认为可能会走得太远,将过多的精力集中在测试套件上,而以实际编写代码为代价。一些 high-profile 人甚至提倡开发人员尝试 不编写测试 一次或两次,这样我们就可以亲身体验它对我们代码质量的影响,数字错误等等(扰流板:质量下降,错误增加,客户满意度下降。但是你亲身了解这与我只告诉你是不同的。)

所以我 个人 对 Rails 应用程序的测试习惯是:

  • 我更喜欢 Minitest 而不是 Rspec。前者鼓励简单明了的单元测试;后者鼓励冗长的规范和更大的测试基础设施。 Minitest(或 Rspec)对您的测试套件来说或多或少是 "global",因为您的所有规范都将使用相同的框架编写。这很好,因为需要管理和学习的工具更少。
  • FactoryGirl 可用于为给定测试快速设置特定数据库场景。我在模型、控制器和集成测试中使用它。
  • Capybara 是一个用于编写高度可读性 end-user 验收/集成测试的框架。它很吸引人,但很容易过度使用,导致冗长的测试变得脆弱且难以维护。我先编写(详尽的)控制器规范,然后再编写明智的集成测试。
  • Cucumber 是 Capybara 之上的一层(用于集成测试)或用于任何其他类型的测试;它允许您以 human-readable 格式编写测试,并迫使您从验收测试的角度考虑。但它很容易变得过于冗长,而且在我迄今为止从事的 tiny-team 项目中,我还没有发现它有用。我避开了。
  • Jasmine 就像 Rspec 对于 Javascript:一种用于编写可读和 well-organized 规范的 JS 代码的语言。如果你有大量的自定义 JS 代码/逻辑,这可能会有用,但我还没有使用它或羡慕它。
  • 模型单元测试:我为每个自定义方法至少编写一个单元测试。
  • 控制器单元测试:我为每个控制器操作的每个可用逻辑路径编写至少一个单元测试,并启用渲染视图所以模板生成也在这里得到锻炼。
  • 集成/验收测试:我着重介绍这些,只添加非常少的路径来涵盖网站的基本用例。我发现大多数错误都没有在这个级别被捕获;控制器测试捕获更多内容,因为它们呈现每个视图模板并执行用户可能触发的每一点模型逻辑。