如何导入开玩笑?

guy*_*abi 19 jestjs es6-modules

我想在我的开玩笑测试代码中摆脱全局变量.具体来说describe,itexpect

describe('Welcome (Snapshot)', () => {
  it('Welcome renders hello world', () => {
     ...
  });
});
Run Code Online (Sandbox Code Playgroud)

所以我尝试添加

import {describe,it} from 'jest';
Run Code Online (Sandbox Code Playgroud)

import jest from 'jest';

jest.describe( ... 
  jest.it( ... 
Run Code Online (Sandbox Code Playgroud)

和其他变化..

但没有运气.

我应该如何使它工作?

Ale*_*ada 18

这个最简单的办法是添加jest: true到您的env配置中eslint,就像这样:

"env": {
  "browser": true,
  "node": true,
  "jasmine": true,
  "jest": true,
  "es6": true
},
Run Code Online (Sandbox Code Playgroud)


guy*_*abi 14

在我意识到jest在节点中运行后,它意识到我可以这样做:

let { describe, it } = global;
Run Code Online (Sandbox Code Playgroud)

不完美,但又向前迈进了一步......现在我不再需要用全局变量配置我的linter了.


der*_*783 10

2020 更新:

试试下面的代码:

import {describe, expect, it } from '@jest/globals'
Run Code Online (Sandbox Code Playgroud)

如果您更喜欢显式导入,您可以从“@jest/globals”导入 {describe、expect、test}。

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


agi*_*ur5 6

我同样不喜欢使用或依赖全局变量,在不同项目中复制/粘贴各种解决方法后,我决定创建jest-without-globals一个非常小的包装器来支持导入 Jest 的功能。

根据使用文档,使用起来很简单:

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

describe('describe should create a section', () => {
  it('it should checkmark', () => {
    expect('').toBe('')
   })
})
Run Code Online (Sandbox Code Playgroud)

Jest 的 API中可用的所有函数以及 和jestexpect可以从 导入jest-without-globals

使用jest-without-globals,我不再需要复制/粘贴解决方法,也不需要配置像 ESLintjest环境这样的设置,它只是作为一个简单的导入工作。

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