Probleme mit Mochas „expect.to.throw“ fehlender ausgelöster Fehler
Bei Verwendung von Chais „expect.to.throw“ zum Testen auf Ausnahmen in Ihrem Knoten Wenn Sie eine .js-Anwendung verwenden, kann es zu unerwarteten Ergebnissen kommen. Wenn der Test aufgrund eines nicht abgefangenen Fehlers fehlschlägt, das Einschließen des Tests in try...catch und die Bestätigung des abgefangenen Fehlers jedoch erfolgreich ist, stellen Sie möglicherweise die Funktionalität von Expect.to.throw in Frage.
Der Kern des Problems liegt in der Art und Weise, wie Expect.to.Throw funktioniert. Um das Auftreten einer Ausnahme effektiv zu testen, ist eine Funktion als Eingabe erforderlich. Durch die Übergabe einer Funktion an „expect“ kann diese Funktion aufgerufen und überprüft werden, ob eine Ausnahme ausgelöst wird.
Im bereitgestellten Code-Snippet übergeben Sie direkt das Ergebnis von model.get('z') an „expect“. . Dieser Ansatz übergibt jedoch den Rückgabewert der Funktion und nicht die Funktion selbst. Um dies zu beheben, müssen Sie Expect mit einer Funktion bereitstellen, die model.get ausführt, wenn sie aufgerufen wird.
Aktualisierter Code:
expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.'); expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));
Durch Verwendung der Bindungsmethode Es wird eine neue Funktion erstellt. Beim Aufruf ruft es model.get mit den angegebenen Argumenten auf und simuliert so die Ausführung von model.get('z'). Dadurch kann „expect.to.throw“ auswerten, ob während der Funktionsausführung eine Ausnahme ausgelöst wird.
Das obige ist der detaillierte Inhalt vonWarum kann Mochas „expect.to.throw' meine erwarteten Fehler nicht abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!