如何导入 Jest?

How can I import Jest?

我想在我的 Jest 测试代码中去掉全局变量。具体来说 describeitexpect:

describe('Welcome (Snapshot)', () => {
  it('Welcome renders hello world', () => {
     ...
  });
});

所以我尝试添加:

import {describe,it} from 'jest';

import jest from 'jest';

jest.describe( ...
  jest.it( ...

和其他变体...

但运气不好。

我应该如何让它工作?

在我意识到 Jest 在 Node.js 中是 运行 之后,它意识到我可以这样做:

let { describe, it } = global;

它并不完美,但更近了一步......现在我不再需要使用全局变量配置我的 linter。

最简单的解决方案是将 jest: true 添加到 ESLint 中的 env 配置中,如下所示:

"env": {
  "browser": true,
  "node": true,
  "jasmine": true,
  "jest": true,
  "es6": true
},

我同样不喜欢使用或依赖全局变量,在 copy/pasting 不同项目中的各种解决方法之后,我决定创建 jest-without-globals 作为一个 非常 支持导入 Jest 功能的微型包装器。

Per the usage documentation,直接使用:

import { describe, it, expect } from 'jest-without-globals'

describe('describe should create a section', () => {
  it('it should checkmark', () => {
    expect('').toBe('')
   })
})

All of the functions available in Jest's API, as well as jest and expect, can be imported from jest-without-globals.

使用 jest-without-globals,我不再需要 copy/paste 解决方法,也不需要像 ESLint 的 jest 环境那样配置设置,它只是一个简单的导入。

它也是用 TypeScript 编写的,因此您可以开箱即用,并且经过全面测试以确保其正常工作。

试试下面的代码:

import {describe, expect, it } from '@jest/globals'

if you prefer explicit imports, you can do import {describe, expect, test} from '@jest/globals'.

来源https://jestjs.io/docs/en/api