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.simulate
linea fallisce poiché sto usando render
ora. Ho bisogno di entrambi per funzionare correttamente. Come lo risolvo?
MODIFICA :
Dovrei menzionare, <EditableText />
non è un componente controllato. Ma quando passo defaultValue
in <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.value
nella console, mostra il valore previsto.
input.render()
è ilreact-dom
rendering. È questo: airbnb.io/enzyme/docs/api/ShallowWrapper/render.html