React-dnd: Tester avec Enzyme plutôt que React TestUtils

Créé le 26 nov. 2017  ·  3Commentaires  ·  Source: react-dnd/react-dnd

Je commence à écrire quelques tests, en suivant cette documentation et aussi ce problème https://github.com/react-dnd/react-dnd/issues/453

Le problème que j'ai est en ce qui concerne le rendu du test.

Je peux obtenir l'exemple donné par la documentation, en enveloppant le composant dans un DragDropContext et en le restituant avec TestUtils.renderIntoDocument .

Cela renverra un objet DragDropContextContainer .

Cependant, si j'essaie d'utiliser la méthode Enyzme mount pour rendre l'objet, elle renvoie un objet $$typeof: Symbol(react.element) - qui ne me permet pas d'obtenir le gestionnaire.

Je préférerais utiliser Enzyme - car c'est ce que j'utilise pour mes tests ailleurs.

Quelqu'un a-t-il de l'aide pour cela?

wontfix

Commentaire le plus utile

A couru dans ce même problème. Je pourrais, et je m'attends à ce que vous puissiez le réparer en utilisant la méthode wrapper.instance() . Également décrit ici https://github.com/react-dnd/react-dnd/issues/488.

par exemple

const Context = wrapInTestContext(Component)
const wrapper = mount(<Context />)
const manager = wrapper.instance().getManager()
const backend = manager.getBackend()

De plus, je devais également faire en sorte que les instances des composants enfants appellent getHandlerId() .

Si ça peut aider, voici un de mes fichiers de test : https://gist.github.com/gilleswittenberg/142fe49e1115b5a1936562b2284e1ab7

Tous les 3 commentaires

Je viens de le faire fonctionner, voici à quoi cela ressemble. en tapuscrit.

import { ThingIAmTesting } from '../file/where/it/lives';
describe('It is a test!', () => {
  let props;
  let component;
  const getComponent = () => {
    let OriginalComponent = (ThingIAmTesting as any).DecoratedComponent;
    let identity = el => el;
    if (!component) {
      component = Enzyme.shallow(
        <OriginalComponent {...props} connectDragSource={identity} />
       );
      return component
    }

    beforeEach (() => {
      props = {
         prop: 'stuff',
         }
      component = undefined;
     })
    it('should render', () => {
      let component = getComponent();
      expect(component).toMatchSnapshot();
    });
})

A couru dans ce même problème. Je pourrais, et je m'attends à ce que vous puissiez le réparer en utilisant la méthode wrapper.instance() . Également décrit ici https://github.com/react-dnd/react-dnd/issues/488.

par exemple

const Context = wrapInTestContext(Component)
const wrapper = mount(<Context />)
const manager = wrapper.instance().getManager()
const backend = manager.getBackend()

De plus, je devais également faire en sorte que les instances des composants enfants appellent getHandlerId() .

Si ça peut aider, voici un de mes fichiers de test : https://gist.github.com/gilleswittenberg/142fe49e1115b5a1936562b2284e1ab7

Ce problème a été automatiquement marqué comme obsolète car il n'a pas eu d'activité récente. Il sera fermé si aucune autre activité ne se produit. Merci pour vos contributions.

Cette page vous a été utile?
0 / 5 - 0 notes