Je ne sais pas comment accéder à la <input>valeur lors de l'utilisation mount. Voici ce que j'ai comme test:
it('cancels changes when user presses esc', done => {
const wrapper = mount(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.render().attr('value'));
input.simulate('focus');
done();
});
La console imprime undefined. Mais si je modifie légèrement le code, cela fonctionne:
it('cancels changes when user presses esc', done => {
const wrapper = render(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.val());
input.simulate('focus');
done();
});
Sauf, bien sûr, la input.simulateligne échoue depuis que je l'utilise rendermaintenant. J'ai besoin des deux pour fonctionner correctement. Comment puis-je réparer ça?
MODIFIER :
Je devrais mentionner, <EditableText />n'est pas un composant contrôlé. Mais quand je passe defaultValuedans <input />, il semble fixer la valeur. Le deuxième bloc de code ci-dessus imprime la valeur, et de même, si j'inspecte l'élément d'entrée dans Chrome et que je tape $0.valuedans la console, il affiche la valeur attendue.
input.render()n'est pasreact-domrendu. C'est ceci: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html