Mocha参数化测试不采用测试数据数组的修改值

时间:2019-01-09 06:11:03

标签: node.js mocha parameterized-tests

这是我正在努力解决的简单问题。在第一个示例中,不运行任何测试;而在第二个测试中,按预期运行了两个测试。

无法按预期工作:// testData在此处before内填充

// test.js
const assert = require('assert');
const forEach = require('mocha-each');

describe('compare()', () => {

    testData = [];

    before(function (done) {
        testData = [[1, 1], [2, 2]];
        done();
    });

    forEach(testData)
        .it('compares %d and %d', (baseline, actual) => {
            assert(baseline == actual);
        });

});

按预期工作:// testData在这里用作硬编码数组

// test.js
const assert = require('assert');
const forEach = require('mocha-each');

describe('compare()', () => {

    forEach([[1, 1], [2, 2]])
        .it('compares %d and %d', (baseline, actual) => {
            assert(baseline == actual);
        });

});

我不明白为什么第一个示例中testData不采用it的修改值。

1 个答案:

答案 0 :(得分:0)

问题在于mocha如何设置测试套件。 before函数中的回调函数已注册,但未在mocha-each的foreach函数之前执行。

相关问题-Dynamically load test parameters?

但是,要进行参数化测试,您可能不需要库,可以使用简单的预加载数组-Parameterized test in mocha。虽然,不同之处在于有一个包含多个断言的测试。

Demo - parameterized mocha tests