Hasilkan koleksi pernyataan Chai yang pelbagai untuk penilaian masa depan
P粉593649715
P粉593649715 2023-09-16 23:25:50
0
1
411

Saya mempunyai beberapa tugasan tak segerak (terikat I/O) untuk dilakukan dan kemudian saya ingin menggunakan nilaiChaiassertyang dikembalikan. Daripada menulis sekeping kod seperti ini:

expect(await taskA.someAsync()).to.be.eq(something); expect(await taskB.someAsync()).to.be.eq(something);

Saya mahu menunggu semua tugasan selesai, menggunakanawait Promise.all([taskA.someAsync(), taskB.someAsync()]),然后逐个expectasserthasil.

Saya mencipta fungsi ini (pseudokod) untuk menjadikan perkara lebih generik:

type TransactionInfo = { txn: Promise; // 要等待的异步任务 assertion: Chai.Assertion // 要在txn结果上运行的断言 } const assertAll = async function(...txns: TransactionInfo[]) { let values = await Promise.all(allTxns); for (let txnInfo of txns) { evaluate(txnInfo.assertion) } }

Tujuan fungsi ini adalahawait所有的txns,然后对每个txn运行每个assertionuntuk mengesahkan nilai yang dikembalikan.

Pertama sekali, saya tidak pastiChai.Assertion类型对于assertion是否正确。其次,我不知道如何实例化一个包含不同类型断言(如eqhave.lengthOf)的TransactionInfo数组。最后,我不知道如何在以后评估assertionobjek.

P.S. Saya bukan pembangun JavaScript profesional. Harap baik hati :)

P粉593649715
P粉593649715

membalas semua (1)
P粉662089521
import { expect } from 'chai'; type TransactionInfo = { txn: Promise; // 要等待的异步任务 assertion: () => void; // 表示要在txn结果上运行的断言函数 }; const assertAll = async function (...txns: TransactionInfo[]) { let values = await Promise.all(txns.map((txnInfo) => txnInfo.txn)); txns.forEach((txnInfo, index) => { txnInfo.assertion(values[index]); }); };

Menggunakan kod ini, anda kini boleh membuat pelbagai objek TransactionInfo, setiap satu dengan fungsi penegasan tersuainya sendiri:

// 示例用法: const txn1: TransactionInfo = { txn: someAsyncTaskA(), assertion: (result) => { expect(result).to.be.eq(something); }, }; const txn2: TransactionInfo = { txn: someAsyncTaskB(), assertion: (result) => { expect(result).to.have.lengthOf(3); }, }; // 使用TransactionInfo对象数组调用assertAll函数 await assertAll(txn1, txn2);
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!