1
votes

VS Code Jest et Cypress intellisense ne fonctionne pas correctement avec Chai

J'utilise Jest comme cadre de test unitaire et ci-dessous intellisense est correct:

 entrez la description de l'image ici

Cependant, lorsque j'installe Cypress "cypress": "^ 3.2.0" , le même code affichant maintenant l'erreur La propriété 'toMatch' n'existe pas sur le type 'Assertion'. Vouliez-vous dire "match"? . La raison de cet IMO est que les typages d'installation de Cypress sont sous node_modules / cypress / types / chai / index.d.ts et VS Code les sélectionne pour intellisense. Jest et Cypress dépendent tous deux de la bibliothèque d'assertions Chai. Intellisense après l'installation de Cypress:

 entrez la description de l'image ici

Existe-t-il un moyen de dire à VS Code quel Chai intellisense utiliser dans un dossier spécifique? Ou y a-t-il un moyen de le spécifier dans le fichier jsconfig.json ?


0 commentaires

3 Réponses :


3
votes

La solution consistait à créer des alias pour les variables globales exposées dans Jest et décorez ces variables avec @type dans JSDoc. J'ai donc créé un fichier jestGlobals.js dans le même répertoire où se trouvent mes tests.

Fichier jestGlobals.js : (j'ai inclus un seul global par souci de simplicité, mais vous feriez la même chose pour toutes les variables globales):

import { expect } from './jestGlobals'


0 commentaires

1
votes

Je suis moi aussi confronté à ce problème.

Habituellement, je peux taper les affirmations par cœur, mais lorsque vous avez vraiment besoin de la saisie semi-automatique, ajoutez

/// <reference types="jest" />

(A directive triple-slash ) En haut de votre le fichier de la suite de tests vous donnera les bons types de plaisanterie.

Remarque: vous devez avoir @ types / jest également installé!

Boîte de dialogue VS Code avec une référence de type appropriée

p >


1 commentaires

Je vais modifier le commentaire. Vous devez également avoir @ types / jest installé!



0
votes

J'ai eu le même problème avec cypress et jest.

Je l'ai résolu en créant deux jsconfig.json

cypress / jsconfig.json

{
  "typeAcquisition": { "include": ["jest"] }
}

puis un pour mon dossier src

src / jsconfig.json

{
  "typeAcquisition": { "include": ["cypress"] }
}

J'ai redémarré VSCode et cela a fonctionné comme prévu


0 commentaires