Erstellen von Tests ist neu für mich. Ich versuche, einen Test für eine Funktion zu erstellen, die ein Ereignis empfängt. Es ist ein onChange
Anruf, wenn es darauf ankommt, und ich verwende chai
.Wie testen Sie eine Funktion, die ein Ereignis empfängt?
Meine Funktion:
export function handleChange(event) {
if (isNaN(event.target.value)) {
event.preventDefault();
alert('input can only be a number');
} else if (event.target.value > 5) {
event.preventDefault();
alert('Rating can not be over 5 stars, please try again');
} else {
this.setState({starRate: event.target.value});
}
hey danke für deine antwort :) du hast recht über die event.preventDefault(), brauchte es nicht. Wenn ich das 'Ziel' in 'event.target.value' verliere, bekomme ich einfach nicht den Ereigniswert von der Eingabe. Ich suchte nach einer Antwort, die mir helfen kann, diese Funktion zu testen und ein Ereignis zu simulieren, wenn es auftritt. –
Wenn Sie tatsächlich "event.target.value" benötigen, müssen Sie dem übergeordneten Element einen Click-Handler hinzufügen und dann delegieren. Das ist ein ungewöhnlicher Ansatz, obwohl es keinen Grund gibt, dass Sie meinen Code dafür nicht ersetzen können. Und welches "Event" versuchen Sie zu simulieren? Sie lösen bereits eine Logik aus, wenn auf die Eingabe geklickt wird. Versuchen Sie, ein Formular einzureichen? Sie können einfach '.submit()' dafür verwenden. –
Das 'event' -Objekt hat eine '.target'-Eigenschaft, unabhängig davon, ob Sie delegierte Event-Handler verwenden. Das 'event' Objekt hat keine' .value' Eigenschaft. – nnnnnn