0

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

没有按预期工作://在这里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

4

1 回答 1

0

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

相关问题 -动态加载测试参数?

但是,要进行参数化测试,您可能不需要库,一个简单的预加载数组就可以工作 - mocha 中的参数化测试。虽然,不同之处在于一个测试有多个断言。

演示 - 参数化摩卡测试

于 2019-01-09T10:04:29.573 回答