3
votes

L'exécution de tests Jest provoque 'TypeError: Impossible de lire la propriété' Symbol (Symbol.toStringTag) 'of undefined'

J'utilise travis-ci pour le déploiement de mes projets open source. Sans changement dans mon code, depuis hier toutes mes builds ne parviennent pas à exécuter les tests unitaires avec l'erreur suivante:

language: node_js
node_js:
 - node
script:
 - yarn test

Ma configuration de build utilise le dernier nœud et exécute juste les tests

~/w/some-package ❯❯❯ yarn test
yarn run v1.13.0
$ jest
 FAIL  test/unit/lib/sometest.js
  ● Test suite failed to run

    TypeError: Cannot assign to read only property 'Symbol(Symbol.toStringTag)' of object '#<process>'

      at _default (node_modules/jest-util/build/createProcessObject.js:85:34)

Y a-t-il eu des changements dans les dépendances des machines travis-ci? y a-t-il une compatibilité entre les versions de node et jest?


0 commentaires

4 Réponses :


6
votes

Cela semble être une incompatibilité entre le nœud 11.11.0 qui est la dernière version stable et les versions jest antérieures à 24.3.0 .

Il existe actuellement 2 solutions:

  • Mettre à niveau Jest (cela utilisera une version de jest compatible avec le nœud 11.11)
language: node_js
node_js:
 - "10.15.3"
script:
 - yarn test
  • Épinglez la version du nœud dans .travis.yml (cela garantira que travis utilise une version de nœud compatible avec les anciennes versions de plaisanterie)
yarn upgrade jest --latest


1 commentaires

si vous utilisez npm et non yarn, vous pouvez utiliser la commande npm update jest



1
votes

La mise à niveau vers jest 24.3.1 résout le problème tel qu'il a été corrigé dans la version 24.3.0.

La version antérieure à 24.3.x est incompatible avec le node 11.11.0 .


0 commentaires

0
votes

J'ai essayé ceci https://github.com/facebook/jest / issues / 8069 # issuecomment-470930698 . Donc, mettez simplement à jour la version du package jest, supprimez les node_modules et package-lock.json, puis réinstallez toutes les dépendances.


0 commentaires

0
votes

Une autre possibilité est que vous ayez ajouté un nouveau service dans le constructeur mais que vous ayez oublié de l'ajouter dans le fichier de spécifications.

Je recommanderais de créer une maquette avec les méthodes dont vous avez besoin de ce service:

XXX

puis vous l'ajoutez en tant que fournisseur:

utilServiceSpy = TestBed.inject(UtilService);

et enfin l'injectez:

{ provide: UtilService, useValue: utilServiceMock},

(les 2 dernières étapes que vous pouvez mettre dans le déclencheur beforeEach )


0 commentaires