8 适用于您下一个开发项目的 React 测试库和实用程序

测试不会为您的应用程序添加任何额外的功能,但它会让您更有信心将应用程序发布到生产环境。

我认为您已经熟悉测试,并且您来到这里是为了了解用于React应用程序的测试库。如果是这样的话,那么您来对地方了。在我们研究不同类型的库之前,让我们快速看一下测试对应用程序质量和开发时间的影响。

测试效果

您中的一些人可能会觉得为应用程序编写测试是一个耗时的过程。暂时跳过这一点。不,为应用程序编写测试不是浪费时间的事情。

假设您开发了一个没有任何测试的应用程序。它具备了100多个功能。经过相当长的时间,比如3个月。您的客户希望您在之前开发的100个功能中添加5个新功能并调整2个功能。

对此您没有任何问题,完成了所有工作并将代码发布到生产环境(通常没有测试)。

几天后,您的客户再次找到您,说旧功能功能失效了。你懵了,不知道为什么?再次花了很长时间解决问题。完成解决问题后,您开始失去信心。

如何获得这种信心?

并节省您花在解决问题上的额外时间。只有一个东西可以做到这一切,即测试。

假设您已为应用程序编写了测试。当您开发新功能或调整旧功能时,您将再次运行测试。在这种情况下,您将在进入产品之前了解到问题。这节省了大量时间,并使您对应用程序的质量更有信心。

现在,是时候审视不同的测试libraries for your next React项目了。

测试库

Testing Library是一组帮助您测试UI组件的软件包。我们专注于React Testing Libray

React测试库是一个轻量级库,其中包含一整套用于测试React DOM的实用程序。它允许我们在不提供库的实现细节的情况下测试React组件。它通过使测试变得更容易来帮助我们获得更多信心。

大多数情况下,它与Jest测试库一起使用。它提供了用于测试的简单方法和实用程序,并指导我们遵循最佳的测试实践。

React测试库的一些特点包括:

  • 它不关心组件的内部状态的测试。
  • 测试组件的渲染结果。
  • 测试DOM节点而不是类的实例。
  • 它提供了一种自定义访问库中DOM元素的方法。
  • 确保UI正常工作。
  • 它有很大的社区支持。

Jest

Jest是一个用于测试JavaScript和TypeScript代码的测试框架。它与前端库很好地集成在一起。它由Facebook开发和维护。React团队推荐它用于React应用程序的测试。

它的下载量超过其他所有测试库。Jest与React测试库结合使用将更加强大。大多数开发人员都在使用这个组合进行测试。

Jest的一些特点包括:

  • 测试是相互隔离的。
  • 它提供了code coverage
  • 速度快。
  • 它提供了一种模拟函数的方式。
  • 它提供了不同类型的异常来进行测试。

Enzyme

这个测试实用程序是用于测试React组件的测试工具。它允许我们遍历和轻松操作React组件的渲染输出。它是由Airbnb创建的。

它必须与其他测试运行器(如jest、mocha、jasmine等)一起使用,用于测试React组件。它提供了额外和简便的方法来链接和测试React组件。并且它只适用于链接7。

Mocha

是一个使测试变得简单的测试框架。它运行在链接9上。它的测试运行器与其他用于React测试的测试库一起工作。

Mocha的一些特点包括:

  • 提供测试覆盖报告。
  • 可以通过配置文件完全自定义。
  • 支持异步测试超时。
  • 基于测试的超时。
  • 它甚至为您突出显示较慢的测试。

Mocha在其主页上还有许多其他功能等待您。

Karma

是您的应用程序的测试环境。它允许我们在链接11和设备(手机、平板电脑和台式机)上运行测试。它旨在为开发人员提供不同的测试环境。

Karma的一些特点包括:

  • 在真实设备上测试您的代码。
  • 它允许我们在类似PhantomJS的无头环境中测试我们的代码。
  • 您可以将Karma与Jenkins、Travis和Semaphore等CI/CD工具集成。
  • 您可以轻松地将其与其他测试框架(如Mocha、Jasmine等)集成。
  • 使用IDE可以轻松进行调试。

Jasmine

是一个行为驱动开发(BDD)的测试框架,用于链接13。它不需要DOM来测试代码。Jasmine专为测试NodeJS代码而设计。我们可以使用Jasmine和其他测试库来测试React。

Jasmine的一些特点包括:

  • 它具有简洁易懂的语法用于编写测试。
  • 我们可以为前端和后端编写测试。
  • Jasmine的核心没有任何依赖关系,这使其运行速度快。

Chai

是一个断言库。它可以与任何其他JavaScript测试库配对使用。Chai提供了should、assert和except等断言功能。

Cypress

是JavaScript端到端测试框架。它允许我们在浏览器中设置、编写、运行和调试测试。它有一个仪表板,可以详细报告每个测试的状态。

Cypress在实际浏览器环境中运行测试,这使您可以访问开发工具。它用于测试应用程序中功能的端到端流程。

Cypress的一些特点包括:

  • 您可以查看每个步骤的快照。它在运行测试时对每个步骤进行快照。
  • 它通过DevTools使调试变得容易。
  • Cypress会在您对测试进行更改时自动重新运行测试,类似于React的实时功能。
  • 测试会自动等待输出,而无需使用await语句。

结论

编写测试对您和应用程序都有好处。在困难时期,它使事情变得容易。不要为此找借口。文章中的链接16的顺序没有任何重要性。它只是为了计数。没有任何库低于其他库。每个库都有其自身的优缺点。

我们可以使用React Testing LibraryJest来测试React应用程序的大部分功能。这是大多数React社区成员推荐的。对于您来说,使用这两个工具并不是强制性的。如果您是初学者,那么可以尝试一下。如果您正在寻找适用于您的应用程序的更具体的解决方案,请逐个查看每个库。

愉快的测试🙂

类似文章