【发布时间】:2018-09-17 00:32:17
【问题描述】:
我希望为包含立即调用函数的 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 文件不能是 required 两次。
编辑:是的context是一个全局变量,当脚本为required时会被操作。我知道这是一个丑陋的解决方案,但我无法更改原始文件。
感谢任何建议。
【问题讨论】:
-
so ..
context是全局变量吗?你的笑话代码中的哪一部分是在处理 IIFE?不清楚 -
你可以使用
require两次,但是它被缓存了。从你的问题中不清楚这是否是一个问题。您应该发布足够多的代码,以便有人可以重现该问题。 -
为什么不让
test2依赖test1的成功完成? -
我已经更新了帖子。缓存是问题(我假设),因为“全局”
context变量在第二次测试中没有被操作(随后失败)