Jest 运行速度比 mocha 慢 40 倍

Iva*_*oga 9 javascript testing mocha.js node.js jestjs

我开了一张票,但如果这是正常和可以接受的,它立即关闭,没有任何信息;

我会在这里发布问题。


认为这是正常的可能是我职业生涯迄今为止最大的错误之一。我在修改 CodeSandbox 并注意到测试与我习惯的相比是多么的即时。设置一个基本的模板项目,这是我的结果:

{
  "name": "jest-performance-test",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "test": "mocha"
  },
  "dependencies": {
    "chai": "^4.2.0",
    "jest": "^23.0.0"
  },
  "devDependencies": {
    "mocha": "^7.1.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

jest.config.js

{
  "testRegex": "__tests__/*",
  "testEnvironment": "node",
}
Run Code Online (Sandbox Code Playgroud)

几十个重复的测试

const {expect} = require('chai')

it ('should run the test', async () => {
  expect (true).to.be.true
})

//...
Run Code Online (Sandbox Code Playgroud)

每个

运行jest --watch,进行更改并保存:

开玩笑的结果

运行yarn run test --watch( mocha --watch),进行更改并保存:

在此处输入图片说明

--runInBand 让它变得更糟。

我明白了,我在 HDD 上使用 5y/o Windows 笔记本电脑等等,但是40 次

我的项目有非常复杂的笑话设置,并在过去一年左右的时间里多次尝试解决性能问题。

什么办法可以不切换到 mocha/chai 吗?我不想再运行一个笑话测试了。

Cri*_*_SO 7

我在我的项目中使用了两者,是的,性能差异非常真实。

jest我仅在它为前端模块提供增强支持时使用- 例如,它对于 React 非常有用。否则我总是使用mocha.

jest使用 Babel 将所有 TypeScript 代码(包括node_modules需要转换的时间)转换为 JavaScript。 mocha用于ts-node直接运行 TypeScript。

这就是差异的原因。