我在 Javascript 中有以下模块
var module = (function (){
var cache = {};
return {
postMessage: function (msg){
if(!cache[msg]){
cache[msg] = true;
console.log(msg);
}
}
}
}());
当我在 Jasmine 中为此模块编写单元测试时,我希望在每个测试开始时有一个带有空缓存变量的干净模块。除了清除缓存且公开可用的辅助函数外,我找不到解决此问题的方法。
有没有办法清除单元测试的闭包变量?我不需要生产代码的解决方案,因为如果我想在生产中清除,我无论如何都会有这样的辅助函数。
最佳答案
在您的情况下无法重置缓存。你在这里拥有的是一个具有私有(private)状态的单例,所以你丢失了,因为你无法重置状态并且你无法在你的测试中创建 module
的新实例。
关于javascript - 为 Javascript 中的单元测试重置闭包变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16892518/