React Test Utils vs Selenium WebDriver

Posted

技术标签:

【中文标题】React Test Utils vs Selenium WebDriver【英文标题】: 【发布时间】:2019-08-08 13:09:47 【问题描述】:

我们已经将 React JS 用于前端,我们需要编写端到端测试。在网上研究后,我们遇到了两个选择:

1. Selenium WebDriver
2. React Test Utils (https://reactjs.org/docs/test-utils.html)

我的理解是,使用 React Test Utils,您可以模拟点击并使用 findRenderedDOMComponentWithXXX 等方法检查 HTML 元素的状态,并且您可以从命令行运行这些测试,这样它们会更快。

Selenium 做同样的事情,但在浏览器中,它将允许您以行为驱动开发风格编写测试(使其更具可读性)

我的困惑:

    我们可以使用 React Test Utils 来测试一个完整的网页(复杂的组件)还是只测试简单的定制组件更好。 例如:如果我们有一个像 Tasks 这样的组件,它允许您 添加任务、删除任务、更改使用 Input、DropDown 和 Toggle 等组件的优先级。

    那么将 React Test Utils 用于整个 Tasks 组件是一个好主意,还是我们应该将它用于较小的单个组件,例如 Input、DropDown、Toggle

    要测试完整的任务组件,请使用 Selenium 编写端到端测试。

其他几点:

    React Test Utils 中的模拟方法需要传递事件数据,这会增加少量工作。

如果有人能帮助我理解两者之间的区别,那就太好了。

【问题讨论】:

看看赛普拉斯。 cypress.io 【参考方案1】:

您可以同时使用 Jest 和 Selenium。不要将自己局限于一个。当您进行测试驱动开发甚至行为驱动开发时,您可能甚至会超越这两个,具体取决于您需要测试的内容。在我看来,Jest 本身并不能真正模拟 UAT。您需要打开浏览器来完全模拟用户体验,但这些浏览器测试可能只是相对于您所有测试的一小部分测试。这么多人远离 selenium 的原因是它的配置和维护过于庞大。还有速度和可靠性。

近年来,基于浏览器的测试出现了更新的工具:

傀儡师

https://github.com/GoogleChrome/puppeteer

Nightwatch.js

http://nightwatchjs.org

此外,您的特定编程语言还为测试提供了额外的功能和增强功能。许多 Java 开发人员在他们的测试中使用 Maven 和 TestNG 来构建和调试他们的测试。 Ruby 开发人员可能会使用 RSpec。无论您使用什么测试运行器,它都可能在后端包含多个依赖项,用于各种测试工具,用于 linting、html 校对、功能、DevSecOps、数据库迁移甚至拼写检查。关键是将您认为需要的所有测试组合在一个测试运行程序中(最好,或尽可能少)。然后在 CI/CD 管道中背靠背地运行它们;像 Jenkins 在部署更改之前一样。如果任何一个失败,那么你的构建就会实时失败。

如果您想在管道中运行多个 API 测试,Newman 将您可能已经部署的 Postman 测试合并到 CI/CD 管道中看起来相当不错。当然,您也可以构建 http 客户端,但并不是每个人都具备编码技能,因此您首先选择的工具也应该与您可用的技能组合相辅相成。

Smart Bear 现在还有几个工具可以在 CI/CD 管道中运行以进行 SOAP 和 UI 测试,但这些工具比开源替代品要贵得多。

【讨论】:

以上是关于React Test Utils vs Selenium WebDriver的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 npm 安装 react-dom/test-utils

react 学习网站

找不到 React 模块:无法解析 '../utils/api'

(vue-test-utils) '不能覆盖属性 $route,...'

Vue-test-utils | Jest:如何处理依赖关系?

VueJs 如何删除全局错误处理程序以使用 vue-test-utils 进行测试