Ich bin verwirrt darüber, wie auf <input>
Wert zugreifen, wenn Sie mount
verwenden. Hier ist, was ich als meine Test bekam:Enzym - Wie Zugriff und Einstellung Wert?
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();
});
Die Konsole druckt undefined
. Aber wenn ich etwas ändern Sie den Code, es funktioniert:
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();
});
Außer natürlich, die input.simulate
Linie versagt, da ich render
bin jetzt mit. Ich muss beide richtig arbeiten. Wie behebe ich das?
EDIT:
Ich sollte erwähnen, <EditableText />
ist nicht eine kontrollierte Komponente. Aber wenn ich defaultValue
in <input />
passiere, scheint es, den Wert einzustellen. Der zweite Codeblock oben druckt den Wert aus, und wenn ich das Eingabeelement in Chrome inspiziere und in der Konsole $0.value
gebe, zeigt es den erwarteten Wert an.
Neugierig, wie dies für Sie arbeitet. Wir verwenden PhantomJS und 'mount()' fügt keine Komponenten in das DOM ein. Sie können also nicht fokussiert werden. Wir müssen ein DOM-Element hinzufügen und die Option 'context' für' mount() 'verwenden. – Pre101
@ Pre101 Ich habe tatsächlich angefangen, Jest anstelle von Enzyme zu verwenden. Sehr empfehlenswert! – ffxsam
@ffxsam: input.get (0) .value zeigt immer "undefined" –