Sono confuso su come accedere al <input>valore durante l'utilizzo mount. Ecco cosa ho come 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 viene stampata undefined. Ma se modifico leggermente il codice, funziona:
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();
});
Tranne, ovviamente, la input.simulatelinea fallisce poiché sto usando renderora. Ho bisogno di entrambi per funzionare correttamente. Come lo risolvo?
MODIFICA :
Dovrei menzionare, <EditableText />non è un componente controllato. Ma quando passo defaultValuein <input />, sembra impostare il valore. Il secondo blocco di codice sopra stampa il valore e, allo stesso modo, se controllo l'elemento di input in Chrome e digito $0.valuenella console, mostra il valore previsto.
input.render()è ilreact-domrendering. È questo: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html