我正在寻找一个包含立即调用函数的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中被操作。我知道这是一个丑陋的解决方案,但无法更改原始文件。
任何建议都值得赞赏。
答案 0 :(得分:0)
jest
具有额外的模块缓存级别,可防止require
多次运行。
添加以下内容以在调用之前清除模块缓存,可使脚本多次运行:
beforeEach(() => {
jest.resetModules()
});