1
votes

Quel est l'équivalent de assert.rejects dans TypeScript?

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?


0 commentaires

3 Réponses :


0
votes

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.


0 commentaires

1
votes

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);
    }
}


2 commentaires

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.



0
votes

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))
}


0 commentaires