javascript - Jasmine 测试说模块未定义

标签 javascript jasmine module-pattern

我正在试验以下代码...

// testable_scripts.js
function addition(){
  return 1 + 1;
}

// spec.js
describe('Addition', function(){
  it('Adds two numbers together', function(){
    expect(addition()).toBe(2);
  });
});

上面的代码一切正常,但是当我把加法函数放在一个模块中并返回它时,我得到“ReferenceError: TestModule is not defined.

var TestModule = (function(){
  var addition = function(){
    return 1 + 1;
  };

  return {
    call_addition: function(){
      addition();
    }
  };
})();

// spec.js
describe('Addition', function(){
  it('Adds two numbers together', function(){
    expect(TestModule.call_addition()).toBe(2);
  });
});

如有任何建议,我们将不胜感激。

最佳答案

在你的代码中,TestModule 必须是一个函数才能返回一些东西:

尝试

var TestModule = function(){
  var addition = function(){
    return 1 + 1;
  };
  return {
    call_addition: function(){
      return addition();
    }
  };
};
// spec.js
describe('Addition', function(){
  it('Adds two numbers together', function(){
    expect(TestModule().call_addition()).toBe(2);
  });
});

将上面的代码粘贴到 http://tryjasmine.com/

关于javascript - Jasmine 测试说模块未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36103683/

相关文章:

密码匹配时javascript禁用/启用提交按钮

javascript - Jasmine + 测试外部依赖

javascript - 我们如何在不加载 JSP 的情况下从 Jenkins (Hudson) 运行 JavaScript jasmine 测试?

javascript - 为什么在声明子 namespace 时不能使用 var?

javascript - JS模块模式覆盖函数

javascript - 我可以在 JavaScript 中为 null 初始化的属性赋值吗?

javascript - Bootstrap 4 更改特定元素的工具提示颜色

javascript - 为什么在reduce过程中插入原始数组的项目没有调用Array.reduce函数?

javascript - 如何在 Jasmine 测试中使用 templateCache 模块?

jquery 应用程序的 Javascript 模块模式