Вы можете переназначить значение времени выполнения global.expect
на стороне javascript, однако на стороне машинописного текста нелегкий выход.
Jest объявляет expect
как глобальную переменную (см. @types/jest/index.d.ts(39, 15)
). В настоящее время машинопись не позволяет переопределить тип легко объявленной переменной в той же области видимости блока .
Так что, пока вы держите @types/jest/index.d.ts
таким, какой вы есть, вы ничего не можете сделать, чтобы подавить эту ошибку.
Решение
1. Простой способ
Самый простой способ использовать Chai's expect
, просто импортировать и использовать его в каждом .test.ts
файле:
// sum.test.ts
import { expect } from 'chai'
import { sum } from './sum';
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).eq(3)
});
2. Трудный путь
Теперь, если вы действительно не можете жить с этой повторяющейся линией import { expect } from 'chai'
, вот трудный путь:
Переместите node_modules/@types/jest
в types/jest
, убедитесь, что он находится в папке node_modules
. Также удалите «@ types / jest» из «package.json => devDependencies».
Изменить types/jest/index.d.ts
, заменить тип expect
на Chai. Вам необходимо зафиксировать это персонализированное объявление типа в вашем git-репо.
// index.d.ts
+ /// <reference types="chai" />
- declare const expect: Expect
+ declare const expect: Chai.ExpectStatic
- В вашем
tsconfig.json
добавьте:
{
"compilerOptions": {
"typeRoots": ["node_modules/@types", "types"],
...
}
- Создайте
jestSetup.js
и добавьте однострочник:
global.expect = require("chai").expect
- в
jest.config.js
, набор:
setupFilesAfterEnv: ['./jestSetup.js'],
// or `setupTestFrameworkScriptFile` for older version.
Вот, пожалуйста. Теперь вы можете использовать chai expect
прямо в глобальной области видимости.