Ich habe einige asynchrone (E/A-gebundene) Aufgaben zu erledigen und möchte dann den Chai
来assert
zurückgegebenen Wert verwenden. Anstatt einen Code wie diesen zu schreiben:
expect(await taskA.someAsync()).to.be.eq(something); expect(await taskB.someAsync()).to.be.eq(something);
Ich möchte mit await Promise.all([taskA.someAsync(), taskB.someAsync()])
,然后逐个expect
或assert
Ergebnissen warten, bis alle Aufgaben abgeschlossen sind.
Ich habe diese Funktion (Pseudocode) erstellt, um die Dinge allgemeiner zu gestalten:
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) } }
Der Zweck dieser Funktion besteht darin, await
所有的txns
,然后对每个txn运行每个assertion
den zurückgegebenen Wert zu überprüfen.
Zunächst einmal bin ich mir nicht sicher, Chai.Assertion
类型对于assertion
是否正确。其次,我不知道如何实例化一个包含不同类型断言(如eq
或have.lengthOf
)的TransactionInfo
数组。最后,我不知道如何在以后评估assertion
Objekt.
P.S. Ich bin kein professioneller JavaScript-Entwickler. Bitte seid nett :)
使用这段代码,现在可以创建一个TransactionInfo对象的数组,每个对象都有自己的自定义断言函数: