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.simulate
ligne échoue depuis que je l'utilise render
maintenant. 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 defaultValue
dans <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.value
dans la console, il affiche la valeur attendue.
input.render()
n'est pasreact-dom
rendu. C'est ceci: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html