javascript 我如何导入Jest?

emeijp43  于 2023-01-16  发布在  Java
关注(0)|答案(4)|浏览(173)

我想去掉Jest测试代码中的全局变量,特别是describeitexpect

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

所以我试着补充:

import { describe, it } from 'jest';

以及

import jest from 'jest';

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

以及其他的变化,但都不起作用。
我怎样才能让我的Jest测试代码在没有全局变量的情况下工作呢?

9cbw7uwe

9cbw7uwe1#

请尝试下面的代码:

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

如果您喜欢显式导入,可以从“@jest/globals”导入{describe,expect,test}。
源代码https://jestjs.io/docs/en/api

bvuwiixz

bvuwiixz2#

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

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

aemubtdh3#

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

let { describe, it } = global;

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

a64a0gku

a64a0gku4#

同样,我也不喜欢使用或依赖全局变量,在不同的项目中复制/粘贴了各种变通方法之后,我决定创建jest-without-globals作为一个 * 非常 * 小的 Package 器,以支持导入Jest的特性。
根据 * 用法 * 文档,可以直接用途:

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

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

Jest's API以及jestexpect中可用的所有函数都可以从jest-without-globals导入。
使用jest-without-globals,我不再需要复制/粘贴变通方案,也不需要配置ESLint的jest环境之类的设置,它只是作为一个简单的导入工作。
它也是用TypeScript编写的,所以你可以直接输入,而且它经过了全面的测试,以确保它能正常工作。

相关问题