#visual-studio-code #jestjs #intellisense #cypress
#visual-studio-code #jestjs #intellisense #cypress
Вопрос:
Я использую Jest в качестве платформы модульного тестирования, и приведенный ниже intellisense верен:
Однако, когда я устанавливаю Cypress "cypress": "^3.2.0"
, тот же код теперь отображает ошибку Property 'toMatch' does not exist on type 'Assertion'. Did you mean 'match'?
. Причина этого IMO в том, что Cypress устанавливает типизацию под node_modules/cypress/types/chai/index.d.ts
и VS Code выбирает их для intellisense. И Jest, и Cypress зависят от библиотеки утверждений Chai. Intellisense после установки Cypress:
Есть ли способ указать VS Code, какой Chai intellisense использовать в определенной папке? Или есть какой-то способ указать это в jsconfig.json
файле?
Ответ №1:
Была такая же проблема с cypress и jest.
Я решил это, создав два файла jsconfig.json
cypress/jsconfig.json
{
"typeAcquisition": { "include": ["cypress"] }
}
а затем один для моей папки src
src/jsconfig.json
{
"typeAcquisition": { "include": ["jest"] }
}
Перезапустил VSCode, и он работал, как ожидалось
Комментарии:
1. Это единственное решение, которое работает для меня.
Ответ №2:
Решение состояло в том, чтобы создать псевдонимы для тех глобальных переменных, которые представлены в Jest, и украсить эти переменные @type
в JSDoc. Итак, я создал файл jestGlobals.js
в том же каталоге, где находятся мои тесты.
jestGlobals.js
файл: (Я включил только одну глобальную для простоты, но вы бы сделали то же самое для всех глобальных переменных):
/** @type {jest.Expect} */
// @ts-ignore
let expect = global.expect
export { expect }
Затем я просто импортирую эти переменные в свои *.spec.js
файлы:
import { expect } from './jestGlobals'
Теперь, когда я использую эти псевдонимы, я получил правильный intellisense следующим образом:
Ответ №3:
Я тоже столкнулся с этой проблемой.
Обычно я могу вводить утверждения наизусть, но когда вам действительно нужно автозаполнение, добавление
/// <reference types="jest" />
(Директива с тройной косой чертой) в верхней части вашего файла набора тестов предоставит вам правильные типы jest.
Примечание: вы тоже должны быть @types/jest
установлены!
Комментарии:
1. Я собираюсь отредактировать комментарий. Вы тоже должны быть
@types/jest
установлены!