4

我在Javascript中有以下模块

var module = (function (){
  var cache = {};
  return {
    postMessage: function (msg){
      if(!cache[msg]){
        cache[msg] = true;
        console.log(msg);
      }
    }
  }
}());

当我在 Jasmine 中为此模块编写单元测试时,我希望在每个测试开始时都有一个带有空缓存变量的干净模块。除了清除缓存且公开可用的辅助函数外,我找不到此问题的解决方案。

有没有办法清除单元测试的闭包变量?我不需要生产代码的解决方案,因为如果我想在生产中清除,无论如何我都会有这样的辅助函数。

4

1 回答 1

3

在您的情况下,无法重置缓存。您在这里拥有的是具有私有状态的单例,因此您迷路了,因为您无法重置状态并且无法module在测试中创建新实例。

于 2013-06-04T06:19:33.510 回答