Es fällt mir schwer, bedeutungsvolle Fehler in Tests zu bekommen, wenn ich Dinge in einem Versprechen überprüfen muss.Wie erhalte ich einen aussagekräftigen Testfehler, wenn die Zusicherung ein Versprechen enthält?
Das ist, weil die meist Test-Frameworks throw
verwenden, wenn eine Behauptung aus, aber die von den then
Versprechungen absorbiert werden ...
Zum Beispiel in dem folgend Ich würde Mokka wie mir sagen, dass 'hello'
isn‘ t gleich 'world'
...
Promise.resolve(42).then(function() {
"hello".should.equal("world")
})
Mit Mokka wir offiziell das Versprechen zurückbringen können, aber diese swallows completely the error und ist somit viel schlimmer ...
Hinweis: Ich verwende mocha
und expect.js
(wie ich mit IE8 kompatibel sein wollen)
Sie ein Versprechen für die Auflösung zu testen zurückkehren können. Sie können beim Testen der Zurückweisung nicht einfach ein Versprechen zurückgeben, da Ihr Test fälschlicherweise bestanden wird, wenn ein Fehler in Ihrem Code vorliegt, der dazu führt, dass das Versprechen unerwartet aufgelöst wird. –
Nun, was Sie hier sagen, bedeutet tautologisch zu sagen "es wird nicht richtig funktionieren, wenn Sie Ihren Code falsch schreiben". – Louis
Wenn Sie nur die Promise ** -Mail- ** zurückgeben, kann Ihr Test ** ** falsch übergeben werden, wenn Sie Ihren Code falsch geschrieben haben. Dein Versprechen hat immer eine Chance zu lösen, bevor es zu den Behauptungen in deinem 'catch' kommt, wenn du auf Ablehnung testest. Tautologie oder nicht, so funktioniert es. –