javascript - 为 Javascript 中的单元测试重置闭包变量

标签 javascript unit-testing jasmine

我在 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/

相关文章:

javascript - 使用 Ramda 处理异步编程

java - 在单元测试运行期间禁用某些方面

Javascript 沙盒单元测试

angular - 使用 jasmine spy 测试 cdk 覆盖

javascript - Karma runner 不会运行所有文件

javascript - Swagger参数多态性

javascript - 尝试使用 Google 脚本从 Google 表格中获取数据并显示在具有水平标签的网页上

javascript - 如何同步检测用户是否拒绝访问地理定位数据?

java - 如何从 JMockit 模拟静态方法

javascript - 有没有办法在 Protractor 中测试下载文件的名称?