Erreur: Cette méthode est uniquement destiné à être exécuté sur un seul nœud. 0 trouvé à la place

Je suis en train de tester un raccourci clavier fonction dans un composant. Le composant est plutôt simple, écouteur d'événement pour l' keyup et les feux d'un redux action qui permet de masquer les composant.

J'ai nettoyé mon code ici uniquement des informations pertinentes. Je suis en mesure de faire le test si je viens d'utiliser le magasin d'expédition de rendre l'action appeler, mais que, bien sûr, va à l'encontre du but de ce test. Je suis à l'aide d'Enzyme pour simuler la keyup événement avec les données d'événement (keycode pour esc) mais j'ai trouver l'erreur ci-dessous.

MyComponent.js

import React, {Component, PropTypes} from 'react';
import styles from './LoginForm.scss';
import {hideComponent} from '../../actions';
import {connect} from 'react-redux';

class MyComponent extends Component {
  static propTypes = {
      //props
  };

  componentDidMount() {
    window.addEventListener('keyup', this.keybindingClose);
  }

  componentWillUnmount() {
    window.removeEventListener('keyup', this.keybindingClose);
  }

  keybindingClose = (e) => {
    if (e.keyCode === 27) {
      this.toggleView();
    }
  };

  toggleView = () => {
    this.props.dispatch(hideComponent());
  };

  render() {
    return (
      <div className={styles.container}>
        //render code
      </div>
    );
  }
}

export default connect(state => ({
  //code
}))(MyComponent);

MyComponent-test.js

import React from 'react';
import chai, {expect} from 'chai';
import chaiEnzyme from 'chai-enzyme';
import configureStore from 'redux-mock-store';
import {mount} from 'enzyme';
import {Provider} from 'react-redux';
import thunk from 'redux-thunk';
import {MyComponent} from '../../common/components';
import styles from '../../common/components/MyComponent/MyComponent.scss';

const mockStore = configureStore([thunk]);
let store;
chai.use(chaiEnzyme());

describe.only('<MyComponent/>', () => {
  beforeEach(() => {
    store = mockStore({});
  });

  afterEach(() => {
    store.clearActions();
  });

  it('when esc is pressed HIDE_COMPONENT action reducer is returned', () => {
    const props = {
      //required props for MyComponent
    };
    const expectedAction = {
      type: require('../../common/constants/action-types').HIDE_COMPONENT
    };
    const wrapper = mount(
      <Provider store={store} key="provider">
        <LoginForm {...props}/>
      </Provider>
      );
    //the dispatch function below will make the test pass but of course it is not testing the keybinding as I wish to do so
    //store.dispatch(require('../../common/actions').hideComponent());
    wrapper.find(styles.container).simulate('keyup', {keyCode: 27});
    expect(store.getActions()[0]).to.deep.equal(expectedAction);
  });
});

Erreur: Cette méthode est uniquement destiné à être exécuté sur un seul nœud. 0 trouvé à la place.

à ReactWrapper.seul (/Users/[nom]/repos/[repoName]/webpack/test.config.js:5454:18 <- webpack:///~/enzyme/build/ReactWrapper.js:1099:0)

à ReactWrapper.simuler (/Users/[nom]/repos/[repoName]/webpack/test.config.js:4886:15 <- webpack:///~/enzyme/build/ReactWrapper.js:531:0)

au Contexte. (/Users/[nom]/repos/[repoName]/webpack/test.config.js:162808:55 <- webpack:///src/test/composants/MyComponent-test.js:39:40)

OriginalL'auteur Sam Sedighian | 2016-05-23