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?
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 :(.