我有一些异步(I/O绑定)任务要做,然后我想用Chai
来assert
返回值。而不是写一段这样的代码
expect(await taskA.someAsync()).to.be.eq(something);
expect(await taskB.someAsync()).to.be.eq(something);
字符串
我想等待所有的await Promise.all([taskA.someAsync(), taskB.someAsync()])
完成,然后expect
或assert
一个接一个的结果。
我创建了这个函数(伪代码),以使事情更加通用:
type TransactionInfo = {
txn: Promise<any>; // Async task to be awaited
assertion: Chai.Assertion // Assertion to be run on txn result
}
const assertAll = async function(...txns: TransactionInfo[]) {
let values = await Promise.all(allTxns);
for (let txnInfo of txns) {
evaluate(txnInfo.assertion)
}
}
型
这个函数应该做的是为所有txns
运行await
,然后为每个txn运行每个assertion
以验证返回值。
首先,我不确定Chai.Assertion
类型是否适用于assertion
。其次,我不知道如何用不同类型的Assert(如eq
或have.lengthOf
)示例化TransactionInfo
数组。最后,我不知道以后如何计算assertion
对象。
P.S.我不是一个专业的JavaScript开发人员。请多多关照:)
1条答案
按热度按时间iyzzxitl1#
字符串
使用此代码,您现在可以创建TransactionInfo对象的数组,每个对象都有自己的自定义Assert函数:
型