单元测试ECMAScript模块(ESM)和模拟本地状态



如何测试依赖于其模块的本地状态的ECMAScript模块(ESM((或JavaScript模块(的功能?具体来说,我想模拟模块中的本地状态。

来自本文http://exploringjs.com/es6/ch_modules.html,我知道:

  • 模块是单态
  • 在ES6中,imports是exports上的只读视图

因此,虽然我可以导出一个局部变量,并从测试中导入该局部变量,然后修改它,因为它是只读的,但我会得到一个错误。

Q(如何模拟ES6模块的本地状态?类型:

  1. 数字
  2. 对象
  3. 功能

示例sumModule.js-我如何模拟它来为测试设置合适的总和?零,可能不合适。

let sum = 0 // local state - type number example
export function addToSum (num) {
sum += num;
return sum
}

我通过添加一个仅用于测试的新函数来解决这个问题:

export function setMockNum (mock) {
num = mock
}

我也可以对函数和对象做同样的事情。

它是可读的(意图很清楚(,它让我能够向前迈进。

最新更新