如何在Node.js中创建数据驱动的测试

时间:2012-10-18 06:40:28

标签: node.js qunit vows nodeunit expresso

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

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

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

原因是,我至少有1000行参数化数据,我想为此写unittest。显然我不能继续写unittests身体。{/ p>

任何人都可以请你指出实现上述目标的方法。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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是否会发现测试是否嵌套,但它确实很好。

享受!