web-dev-qa-db-fra.com

ComponentDidMount est-il censé fonctionner avec un rendu superficiel dans Enzyme?

D'après ma compréhension et ce que j'ai lu jusqu'à présent dans diverses réponses, toutes les méthodes de cycle de vie ne sont pas censées être exécutées avec un rendu peu profond. Surtout componentDidMount

Cependant, je remarque que lorsque je fais

  beforeEach(function () {
    fakeComponentDidMount = sinon.stub(Component.prototype, 'componentDidMount');
    fakeComponentDidMount.callsFake(function () {});
    wrapper = shallow(<Component {...props} />);
  });

  afterEach(function () {
    fakeComponentDidMount.restore();
  });

  it('calls componentDidMount', function () {
    expect(fakeComponentDidMount.called).to.equal(true);
  });

le test réussit.

Alors, est-ce que je fais quelque chose de mal ici ou ai-je compris quelque chose de mal?

Pour référence

16

Oui, c'est dans enzyme 3.0.

https://github.com/airbnb/enzyme/blob/master/CHANGELOG.md#3

LifeCycleExperimental qui était auparavant une option que vous deviez définir manuellement sur true sur shallow est maintenant activé par défaut car il est désormais stable.

C'est bien plus agréable que d'avoir à recourir à mount pour tester les cycles de vie.

Il n'y a absolument aucune excuse pour ne pas utiliser shallow pour les tests unitaires maintenant:) ... Bien à part quand vous devez tester les références :(.

24
Martin Dawson