【问题标题】:How to create a data driven test in Node.js如何在 Node.js 中创建数据驱动测试
【发布时间】:2012-10-18 06:40:28
【问题描述】:

Node.js 单元测试中,创建数据驱动unit tests 的方法是什么?

例如,我有一个常见的function / method,我想在具有不同数据集的多个单元测试中重复使用它。我试着调查nodeunit, vows, whiskey, qunit, expresso;但我无法找到实现此功能的方法。

我并没有考虑在多个测试中逐字调用该函数,而是在循环中使用常见的method 在每次迭代中获取数据并执行它,作为unittest

原因是,我至少有 1000 行参数化数据,我想为此编写 unittest。显然我不能继续写 1000 unittests 物理。

谁能指点我实现上述目标的方法。

【问题讨论】:

  • 请定义“参数化数据行”?你指的是对象字面量数组还是 JSON 字符串?

标签: node.js qunit vows nodeunit expresso


【解决方案1】:

有允许运行参数化 quint 测试的 qunit 插件
https://github.com/AStepaniuk/qunit-parameterize

因此您可以将测试数据测试方法分开,并针对不同的数据集运行相同的测试方法。

【讨论】:

    【解决方案2】:

    这是一篇相当老的帖子,但我自己也遇到了这个问题,如果不使用其他评论(qunit-parameterize)引用的插件,我无法为 QUnit 找到一个干净的解决方案。老实说,我不知道如何将插件与我公司的项目集成,大约一个小时后就放弃了。

    这就是我最终解决它的方式:

    只需使用您的输入(以及预期的输出,如果需要)定义一个数组,遍历您的数组,然后在回调中定义 QUnit 测试!超级简单,真的,但效果很好。

    const testCases = [
        { input: "01/01/2015", expected: "2015-01-01" },
        { input: "09/25/2015", expected: "2015-09-01" },
        { input: "12/31/2015", expected: "2015-12-01" }
    ];
    
    testCases.forEach(testCase => {
        QUnit.test("gets first of month",
        () => {
            const actual = new classUnderTest().getFirstOfMonth(testCase.input);
            strictEqual(actual, testCase.expected);
        });
    });
    

    如果 QUnit 如此嵌套,我不确定 QUnit 是否会发现测试,但它确实很好。

    享受吧!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2016-11-08
      相关资源
      最近更新 更多