【问题标题】:Test module's global variables in Mocha在 Mocha 中测试模块的全局变量
【发布时间】:2018-11-12 20:26:33
【问题描述】:

我有一个要测试的模块:

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 函数,我想测试一个 array 变量是否确实被拼接。但是在控制台中我得到:“TEST:[]”,因为被测试模块本地的 array 变量确实是空的。我的问题是如何修改本地 array 以进行测试?我不想将 array 解析为 DeleteNumb 的参数。提前致谢。

【问题讨论】:

标签: javascript node.js mocha.js chai


【解决方案1】:

我需要做的就是像这样将我的 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);
    });
});

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 2020-10-09
    • 1970-01-01
    • 2016-02-10
    • 2019-08-06
    • 2015-03-07
    相关资源
    最近更新 更多