J'ai des tâches asynchrones (liées aux E/S) à effectuer et je souhaite ensuite utiliser la Chai
来assert
valeur renvoyée. Au lieu d'écrire un morceau de code comme celui-ci :
expect(await taskA.someAsync()).to.be.eq(something); expect(await taskB.someAsync()).to.be.eq(something);
Je veux attendre que toutes les tâches soient terminées, en utilisant await Promise.all([taskA.someAsync(), taskB.someAsync()])
,然后逐个expect
或assert
results.
J'ai créé cette fonction (pseudocode) pour rendre les choses plus génériques :
type TransactionInfo = { txn: Promise<any>; // 要等待的异步任务 assertion: Chai.Assertion // 要在txn结果上运行的断言 } const assertAll = async function(...txns: TransactionInfo[]) { let values = await Promise.all(allTxns); for (let txnInfo of txns) { evaluate(txnInfo.assertion) } }
Le but de cette fonction est await
所有的txns
,然后对每个txn运行每个assertion
de vérifier la valeur renvoyée.
Tout d'abord, je ne suis pas sûr Chai.Assertion
类型对于assertion
是否正确。其次,我不知道如何实例化一个包含不同类型断言(如eq
或have.lengthOf
)的TransactionInfo
数组。最后,我不知道如何在以后评估assertion
object.
P.S. Je ne suis pas un développeur JavaScript professionnel. S'il vous plaît soyez gentil :)
À l'aide de ce code, vous pouvez désormais créer un tableau d'objets TransactionInfo, chacun avec sa propre fonction d'assertion personnalisée :