茉莉花-如何模拟全局变量和函数

时间:2019-01-16 16:11:02

标签: javascript unit-testing jasmine mocking

我有一个要测试的脚本,该脚本包含全局变量,其中一些已通过函数调用初始化。例如

var g_count = 0;
var g_util = addLibrary( "util.lib" );

我想同时模拟g_countg_util

如果我在测试函数中有一个函数调用,则可以使用addLibrary = jasmine.createSpy();对其进行轻松模拟,但是一旦它在全局范围内,模拟就会失败,并且会出现错误消息

  

参考错误:未定义addLibrary。

编辑:我弄清楚了如何模拟变量。我将其添加到全局属性

var globals = {
    g_count : null
}

导出

module.exports = {
    globals: globals
}

然后监视

spyOnProperty(util.globals, 'g_count').and.returnValue(5);

我仍然不知道addLibrary函数

1 个答案:

答案 0 :(得分:0)

我修复了addLibrary的错误。由于它用于初始化全局变量,因此在我需要脚本时被调用。将addLibrary = jasmine.createSpy();添加到require(...)上方即可解决问题。