Dans le nœud js, nous utilisons assert.rejects
pour affirmer une erreur causée par la fonction async. J'ai trouvé que la méthode rejets
manquait dans TypeScript, comment affirmer les erreurs asynchrones dans TypeScript?
3 Réponses :
Ni JavaScript ni TypeScript n'offrent leur propre fonctionnalité assert
. Si vous recherchez "JavaScript assert" ou similaire (rappelez-vous que TypeScript est JavaScript plus des types statiques et une ou deux autres petites choses), vous trouverez diverses bibliothèques pour le faire parmi lesquelles vous pouvez choisir.
Je pense que l'utilisation de cette fonction résoudra votre problème:
await assertThrowsAsync(async () => async_function_call_here(), /Error/);
Et l'utiliser dans vos tests:
import * as assert from 'assert'; async function assertThrowsAsync(fn, regExp) { let f = () => {}; try { await fn(); } catch(e) { f = () => {throw e}; } finally { assert.throws(f, regExp); } }
Wow, c'est une manière très intelligente! Mais pourquoi n'est-il pas intégré?
Aucune idée mais ça aurait dû l'être. Je suppose que les fonctionnalités async / await seront éventuellement ajoutées à tous les modules principaux, mais cela prendra un certain temps.
La réponse de @ MrfksIV est excellente, mais il est fastidieux d'écrire cette fonction d'assistance et de la référencer toujours.
Pour assert async errors semble que nous pouvons le faire de cette manière aussi:
try { await someOperation(); assert(false, 'should not reach here'); } catch (ex) { assert(/Your Expected Error/.test(ex.message)) }