Heim > Web-Frontend > js-Tutorial > Warum kann „expect.to.throw' ausgelöste Fehler in Chai nicht abfangen?

Warum kann „expect.to.throw' ausgelöste Fehler in Chai nicht abfangen?

DDD
Freigeben: 2024-11-27 09:09:10
Original
337 Leute haben es durchsucht

Why Does `expect.to.throw` Fail to Catch Thrown Errors in Chai?

Mocha/Chai explore.to.throw: Verstehen, wie es funktioniert

Beim Testen ist es entscheidend, sicherzustellen, dass Fehler wie erwartet ausgelöst werden . Allerdings stoßen Benutzer bei Chais „expect.to.throw“ häufig auf Probleme, da die ausgegebenen Fehler nicht korrekt abgefangen werden. Sehen wir uns genauer an, warum dies auftritt und wie man es beheben kann.

Das Problem entsteht, wenn das Ergebnis eines Funktionsaufrufs direkt an „expect.to.throw“ übergeben wird. Erwarten Sie beispielsweise(model.get('z')).to.throw(...). In diesem Fall basieren Sie auf dem Rückgabewert von model.get('z') und nicht auf der tatsächlichen Auslösung eines Fehlers.

Um dieses Problem zu beheben, müssen Sie eine Funktion übergeben, die einen Aufruf erwartet zu erwarten. Diese Funktion würde dann model.get mit den entsprechenden Argumenten aufrufen. Betrachten Sie den folgenden Code:

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
Nach dem Login kopieren

Hier erstellt model.get.bind(model, 'z') eine neue Funktion, die beim Aufruf model.get mit dem Argument 'z' aufruft und die auflöst Problem.

Das Verständnis dieses Verhaltens ist wichtig, um Expect.to.throw effektiv nutzen zu können. Denken Sie daran, Funktionen zu übergeben, die den erwarteten Fehler auslösen, um ein genaues Testen von Fehlerbehandlungsszenarien sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum kann „expect.to.throw' ausgelöste Fehler in Chai nicht abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage