React 单元测试实例:快速上手指南(2)

发表于:2024-1-05 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Sanjeev Sharma    来源:网络

  接下来,我们给funkyNum函数编写测试
  编写测试时,应该尽量多地覆盖函数的分支和语句。测试覆盖率越高会让人越有信心。
  如果你再次运行测试,应该会看到以下输出。
  理想情况下,我们也应该为isFibonacci和isPerfectSquare函数编写单独的describe语句块。在单元测试中,测试代码应该是互相独立的。简洁起见,这里我们没有这样做。
  小提示
  1. 通过调用.skip或test.skip来跳过任何测试,或调用describe.skip来跳过整个测试块。
  2. 通过调用it.only或test.only执行单个测试。
  上面我们已经介绍了如何使用Jest进行JS代码的测试。现在,让我们深入探讨下关于React的测试。
  在开始之前,我们还需要安装一些依赖库:
  同时,还需要在jest.config.ts中添加环境:
  下面我们给CounterButton组件编写一个最基础的测试:
  在上面的代码中,我们提供了所需的props,并尝试渲染组件。对于任何组件,这都应该是你为它编写的第一个测试。因为如果该测试无法通过,那么其他测试就毫无用处。
  RTL(ReactTestingLibrary)的render函数将在document.body中渲染传入的组件。
  它还返回了一些诸如getByText这样的查询方法,可用于在DOM中查找元素。
  如果你再次运行测试,应该可以看到2组测试——全部为绿色且通过。
  我们编写的第二个测试是测试组件对于props的反应。如果各个prop之间没有互相依赖,那么应该为每个prop参数都编写单独的测试。
  getByText函数是一种查询方法,可以让我们通过字符串来获取元素。
  toBeInTheDocument函数是一个和toEqual类似的匹配器。Jest默认不提供该函数,需要在安装@testing-library/jest-dom库之后才能使用。
  不同的环境有不同的包,例如在ReactNative环境中,需要使用@testing-library/jest-native。
  如果你再次运行测试,测试应该也会通过。
  最后,我们来编写本文的最后一个测试,同时也是最重要的一个。我们将编写一个测试来检查点击事件处理程序是否按预期工作。
  为了生成用户事件(例如点击和按键),我们需要安装另外一个包。
  与之前的测试代码相比,这次的测试代码几乎一样,只有一些微小的差异。
  注意:由于是模拟用户事件,所以该函数异步执行。
  第一行的jest.fn()是一个模拟函数。在测试运行时,可以通过它跟踪诸如调用参数、调用次数等很多非常有用的信息。类似这样的函数,以后你会看到很多。
  我们还使用了一种新的查询方法getByRole来查找按钮元素。
  在检查模拟函数是否被调用之前,我们需要先等待点击事件完成。
  就是这样!如果你运行测试,它们应该也会通过。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号