测试立即调用功能

时间:2018-09-17 00:32:18

标签: javascript unit-testing

我正在寻找一个包含立即调用函数的javascript文件的测试套件。例如:

(function(context) {
    context.setVariable("a") = context.getVariable("a") + 1
})(context);

我无法更改要测试的文件。

我当前的尝试是使用jest和以下命令:

context = null

test('test1', () => {
    context = new context_mock();
    context.setVariable("a", "1");
    require("./My-Javascript");
    // Check result
    helper.check(context.getVariable("a"), 2);
});

test('test2', () => {
    context = new context_mock();
    context.setVariable("a", "2");
    require("./My-Javascript");
    // Check result
    helper.check(context.getVariable("a"), 3);
});

在这种情况下,测试2始终失败。我认为这是因为javascript文件无法两次require d。

编辑:是context是一个全局变量,在脚本require d中被操作。我知道这是一个丑陋的解决方案,但无法更改原始文件。

任何建议都值得赞赏。

1 个答案:

答案 0 :(得分:0)

jest具有额外的模块缓存级别,可防止require多次运行。

添加以下内容以在调用之前清除模块缓存,可使脚本多次运行:

beforeEach(() => {
    jest.resetModules()
});
相关问题