在npx create-react-app my-app
之后,我运行npm test
,得到以下结果:
PASS src/App.test.js
✓ renders learn react link (48ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 2.555s
Ran all test suites.
Watch Usage: Press w to show more.
为什么运行整个套件需要2.5s
,而运行测试只需要48ms
?如何加快这一进程?谢谢你,谢谢
更新:我正在运行此计算机:
2条答案
按热度按时间krcsximq1#
答案很简单:如果你的测试用了48毫秒,而整个套件的持续时间用了2.555秒,那么还有其他正在运行的代码占用了另外的2.507秒。
换句话说,在这一次测试之前和之后必须运行的代码比您在不查看
jest
库的框架代码的情况下看到的要多得多。这就是为什么套件的运行时间(2.5秒)比测试的总和(48毫秒)长。
为了使测试更简单(也更容易)和更自动化,有很多“幕后”代码允许您:
jest
模拟浏览器来保持您的代码与在生产环境中运行的代码相似一个类比是租一辆共享汽车;你有一个最低的成本,只是进入汽车,但一旦你在那里,它是加上每分钟或每英里的成本。所以,租一辆自行车要花2.507美元,每英里再加4.8美分。
一旦你的测试环境在一开始就建立好了,你的后续测试就不会每次都需要2.5秒的时间来运行。
与时间有关的笑话的有用链接:
加快测试速度的方法是:
jsdom
environment中运行测试。虽然缺点是你的React测试会失败,所以这只适用于纯Node测试(服务器端)。另一个非代码选项是使用更好/更快的CPU或使用更高效的操作系统。
你的2.555秒与默认的React应用程序是众多的速度比我的6.17秒在Windows 10上,华硕GL 502 VMK。
在Ubuntu 20桌面虚拟机上运行它(上面提到的同一台Windows 10机器上的Virtualbox,12 GB主机RAM中的8个,8个主机CPU中的4个),它需要2.105秒。
你可以找到很多抱怨Jest和执行时间的文章,所以看起来不一定只有你这样做。Jest的某些部分并不快。
bbmckpt72#
我能够添加
--maxWorkers=4
标志,并看到速度增加没有国旗
添加了
--maxWorkers=4
尽管随着测试的进行,它似乎变化很大。花这么长时间还是很疯狂我习惯于在Angular项目中使用Jasmine/Karma测试,这些测试运行得非常快。我可以在Jest设置
expect(true).toEqual(true)
所需的时间内运行几百个测试