在mocha中的mavascript中运行test_file.js中的不同模块

时间:2017-07-27 08:47:04

标签: javascript unit-testing mocha

文件中有两个功能 我想在test_a文件中运行这两个函数 在我跑完之后,它只为所有it()运行了第二个模块 我希望每个模块在自己的函数中执行这些it(),我不想将这两个函数分成两个文件。
你有什么想法?谢谢!!

//a.js
var add_data = function(data) {
    var data_displayed = 5;
    //var label_name = data[0];
    if (data.length - data_displayed <= 1) // data[0] == label
        var data_start = 1;
    else
        var data_start = data.length - data_displayed;
    return data_start;
};
module.exports = add_data;
var prepend_label = function(label, data, start_index, end_index) {
    data = data.splice(start_index, end_index);
    console.log('before = ' + data);
    if (data[0] != label);
    console.log(data[0]);
    data.unshift(label);
    console.log('after = ' + data);
    return data;
};
module.exports = prepend_label;
//test_a.js
var add_data = require('./a.js');
var prepend_label_to_spliced_data = require('./a.js');
var expect = require("chai").expect;
describe("define test suite", function() {
    it("test add_data() : data.length - data_displayed <= 1", function() {
        var data = ['0', '1', '2', '3', '4'];
        expect(add_data(data)).to.be.equal(1);
    });
    it("test add_data() : data.length - data_displayed > 1", function() {
        var data = ['0', '1', '2', '3', '4', '5'];
        expect(add_data(data)).to.be.equal(1);
    });
});
//var prepend_label_to_spliced_data = require('./home.js');
describe("define test suite2", function() {
    it("test prepend_label() : data[0]!=label", function() {
        var data = ['0', '1', '2', '3', '4'];
        var data2 = ['1', '2', '3', '4'];
        data2.unshift('x');
        expect(prepend_label('x', data, 1, data.length - 1)).to.be.equal(data2);
    });
});

1 个答案:

答案 0 :(得分:0)

简单。你用第二个覆盖第一个导出。你需要像

一样导出它们
module.export = {
    prepend_label, add_data // es2015 syntax
}

然后引用测试文件中的函数:

const aModule = require('./a');
// do something...
aModule.add_label('foo');
// ...