测试模块在Mocha中的全局变量

时间:2018-06-03 08:46:51

标签: javascript node.js mocha chai

我有一个我想测试的模块:

var array = []; //<--- mobule local array

var Deleter = {
    DeleteNumb: function(number) {
        console.log("TEST", array); //<--- Console
        var index = array.indexOf(number);

        if(index != -1) {
            array.splice(index, 1);
        }
    }
};

module.exports = Deleter;

我有一个测试文件,我试图测试这个文件:

var expect = require("chai").expect;
var Deleter = require("../DELETE.js");

describe("Testing Deleter", function() {
    it("DeleteNumb", function() {
        var array = [1,2,3,4,5]; // <--- test arrray

        Deleter.DeleteNumb(3);

        expect(array).to.be.length(4);
    });
});

如果我调用 DeleteNumb 函数,我想测试是否确实拼接了数组变量。但是在控制台中我得到:“TEST:[]”,因为正在测试的模块本地的 array 变量确实是空的。我的问题是如何为我的测试修改本地数组?我不想将数组解析为 DeleteNumb 的参数。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我需要做的就是将DELETE.js本地数组添加到导出中:

module.exports.array = array;
module.exports.Deleter = Deleter;

然后在测试文件中,我可以根据需要修改本地数组:

var expect = require("chai").expect;
var Deleter = require("../DELETE.js").Deleter;
var testarray = require("../DELETE.js").array;

describe("Testing Deleter", function() {
    it("DeleteNumb", function() {
        testarray.push(1,2,3,4,5);//modifying DELETE.js array using module.exports reference

        Deleter.DeleteNumb(3);

        expect(testarray).to.be.length(4);
    });
});