web-dev-qa-db-fra.com

ReactTestUtils a été déplacé

Je commence à apprendre React et pendant que je faisais des tests, j'ai remarqué deux messages d'avertissement:

Avertissement: ReactTestUtils a été déplacé vers react-dom/test-utils. Mettez à jour les références pour supprimer cet avertissement.

Avertissement: le rendu peu profond a été déplacé vers react-test-renderer/shallow. Mettez à jour les références pour supprimer cet avertissement.

Ils n'empêchent pas les tests de s'exécuter ni de valider correctement, mais il y a toujours cette erreur.

En regardant les documents, je a trouvé cette page , même après avoir inclus les lignes qu'ils recommandent, le message d'avertissement s'affiche toujours.

J'essaie un test très simple pour commencer, voici mon code:

import React from "react";
import toJson from "enzyme-to-json";
import { shallow } from "enzyme";
import { About } from "./About";

describe('Rendering test', () => {
    const component = shallow(<About />);
    const tree      = toJson(component);

    it('Should render the About component', () => {
        expect(tree).toMatchSnapshot();
    })

    it('Should not contain an h2 element', () => {
        expect( component.contains('h2') ).toBe(false);
    })
})

Que dois-je faire pour résoudre ces avertissements? J'ai déjà mis à jour tous mes emballages vers les dernières versions.

20
celsomtrindade

Je pense que cela vient de l'utilisation de la fonction de rendu shallow d'enzyme, qui n'a pas encore été mise à jour pour la v15.5 (il y a cependant pull request ).

Vous pouvez essayer d'utiliser l'une des autres fonctions de rendu ( render ou mount ), mais cela changera la sémantique de votre test (et peut ou non toujours produire l'avertissement).

Votre autre option est de ne pas utiliser d'enzyme et d'utiliser react-test-renderer/shallow yourself , mais l'API enzymatique est assez agréable pour tester les composants.

Mon conseil est d'attendre la version de l'enzyme et de vivre avec l'avertissement pour l'instant.

16
Michael Peyper

Si vous utilisez React 0.14 ou React <15.5, en plus de l'enzyme, vous devrez vous assurer que les modules npm suivants sont également installés s'ils n'étaient pas déjà:

npm i --save-dev react-addons-test-utils react-dom

Si vous utilisez React> = 15.5, en plus d'enzyme, vous devrez vous assurer que vous avez également installé les modules npm suivants s'ils ne l'étaient pas déjà:

npm i --save-dev react-test-renderer react-dom
21
Pere Pages

Mise à jour août 2017

Si vous installez react-test-renderer ça va marcher mais tout react-* les versions doivent correspondre:

par exemple.
[email protected]
[email protected]
[email protected]
[email protected]

Dans mon environnement, seule cette config fonctionnait!

1
Yuri Ramos

Je recevais toujours l'avertissement suivant après avoir essayé les étapes répertoriées ci-dessus.

Avertissement: ReactTestUtils a été déplacé vers react-dom/test-utils. Mettez à jour les références pour supprimer cet avertissement.

La mise à jour du chemin dans\node_modules\react-addons-test-utils\index.js a résolu ce problème pour moi.

Vieux:

lowPriorityWarning(
  false,
  'ReactTestUtils has been moved to react-dom/test-utils. ' +
    'Update references to remove this warning.'
);

module.exports = require('react-dom/lib/ReactTestUtils');

Nouveau:

lowPriorityWarning(
  false,
  'ReactTestUtils has been moved to react-dom/test-utils. ' +
    'Update references to remove this warning.'
);

module.exports = require('react-dom/test-utils');
0
Gareth