How do I loop through dynamic test cases in Jest?

我有下面这样的测试用例,如何使用it/test个方法动态创建jest测试用例.

然而,它只是通过了测试,没有执行循环中的测试用例.

    const mymodule = require('mymodule');

    const testCases = [
        {q: [2, 3],r: 5},
        {q: [1, 2],r: 3},
        {q: [7, 0],r: 7},
        {q: [4, 4],r: 8}
    ];

    describe("Test my Math module", () => {
        test("test add method", () => {
            for (let i = 0; i < testCases.length; i++) {
                const { q,r } = testCases[i];
                it(`should  add ${q[0]},${q[1]} to ${expected}`, () => {
                    const actual = mymodule.add(q[0] + q[1]);
                    expect(actual).toBe(expected);
                });
            }
        });
    
    });

推荐答案

有一种内在的方法可以做到这一点:test.each(table)(name, fn, timeout)

例如

test.each([[1, 1, 2], [1, 2, 3], [2, 1, 3]])(
  '.add(%i, %i)',
  (a, b, expected) => {
    expect(a + b).toBe(expected);
  },
);

其中,2D数组中的每个内部数组都作为参数传递给测试函数.

Node.js相关问答推荐

如何将信号从终端窗口发送到运行在Raspberry Pi上的Puppeteer/Node.js上的webscraper

如何在ejs模板中使用循环显示多个结果?

从MongoDB获取Tree数据

使用ReadableStream.管道时NodeJS Crypto Hash不正确

Mongoose:如何使用填充进行查找

找不到 vue-template-compiler@2.6.14 的匹配版本 | Shopware 6.5 更新后的 node 问题

无法使用 Express 设置会话 cookie 的过期日期

当try 将 formData 转换为 express js 时,服务器无法识别 multipart/form-data

如何在带有 JS 的 Nodejs 中使用没有 Async 方法的 Await

如何删除mongodb中嵌套数组中所有出现的数组元素

如何使动态私有IP地址静态?

使用中的端口代码:'EADDRINUSE',即使在 kill 命令之后

Cassandra node.js 驱动程序有替代品吗?

`npm install` 以Killed结尾

bash:npm:找不到命令?

如何以编程方式检测nodejs中的调试模式?

npm 出现无法读取依赖项错误

Javascript在try块内设置const变量

#!/bin/env是什么意思(在 node.js 脚本的顶部)?

node.js 服务器和 HTTP/2 (2.0) 与 express.js