Testen Sie die Einstellung text-Wert mit Reagieren und Enzym
Wie legen Sie die text-Eingabe und testen Sie es Wert ist, mit Reagieren /Enzym?
const input = wrapper.find('#my-input');
input.simulate('change',
{ target: { value: 'abc' } }
);
const val = input.node.value;
//val is ''
Alle Lösungen hier scheinen nicht zu funktionieren..
- Es scheint, dass Sie verwenden müssen
mount
für Sie, um richtig zu arbeiten. - Mögliche Duplikate von Enzym - How zu access und set <input> Wert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wirklich zu verstehen, was passiert in deinem code wäre es nützlich zu sehen, Komponentencode (speziell Ihr
onChange
hf.Jedoch in Bezug auf die folgenden code:
Diese nicht tatsächlich ändern Sie den Wert Ihres
<input />
element, sondern es bewirkt, dass IhronChange
Funktion ausgeführt werden und zur Verfügung gestellt werden ein event-Objekt, das aussieht wie{target: {value: 'abc'}}
.Die Idee ist, dass Ihr
onChange
Funktion aktualisieren Sie Ihren Status oder laden, so das auslösen dieser Funktion sollte Ergebnis in Ihrem DOM aktualisiert. Wenn Sie don ' T haben tatsächlich eineonChange
handler definiert mitinput.simulate('change')
nichts.Also, wenn Ihr Ziel ist eigentlich den Wert des input-und nicht das auslösen eines
onChange
handler dann können Sie JS zum manuellen aktualisieren der DOM mit so etwas wiewrapper.find('#my-input').node.value = 'abc';
dies ist jedoch umgehen, Reagieren die render-Zyklus, und Sie werden wahrscheinlich sehen Sie diesen Wert gelöscht/entfernt werden, wenn Sie alles tun, um die Auslöser einer re-Rendern.input.node.value = "Test"
, und ich bin immer diese FehlermeldungTypeError: Can't add property value, object is not extensible
. Irgendwelche Ideen?Ich bin mit
React 16
undEnzyme 3.10
hier und das völlig für mich gearbeitet (nach dem Versuch, zu viele verschiedene Vorschläge gibt):Anscheinend in früheren Versionen, die Sie nutzen könnten
node
odergetNode()
stattinstance()
, die Teile von meinen vielen vorherigen versuche..node
aber Enzyms mir zugetElement()
aber das gab mir die reagieren element und nicht das dom-element. Thx für die gemeinsame Nutzung derinstance()
Funktion.typescript
versagt mit Fehler:TS2339: Property value does not exist on type Component<{}, {}>
. Können Sie bitte helfen?Dies funktioniert für beide-Enzym 3 Enzym und 2:
.getDOMNode()
verwendet werden können, wie.node
im Enzym 2 und wie.instance()
im Enzym 3.wrapper.getDOMNode is not a function
. Wie es aussieht ist nur fürmount
github.com/airbnb/enzyme/blob/master/docs/api/ReactWrapper/...Hier, es funktioniert für mich..
Ich haben, ändern Sie die Eingabe von text, mit Wert updation.
Und Update meine DOM-Eigenschaft.
Nach einem Update checke ich die Schaltfläche deaktivieren Sie die Eigenschaft mit Eingabe Handy-Nummer Länge Anwendungsfälle.