如何测试依赖于其模块的本地状态的ECMAScript模块(ESM((或JavaScript模块(的功能?具体来说,我想模拟模块中的本地状态。
来自本文http://exploringjs.com/es6/ch_modules.html,我知道:
- 模块是单态
- 在ES6中,
import
s是export
s上的只读视图
因此,虽然我可以导出一个局部变量,并从测试中导入该局部变量,然后修改它,因为它是只读的,但我会得到一个错误。
Q(如何模拟ES6模块的本地状态?类型:
- 数字
- 对象
- 功能
示例sumModule.js
-我如何模拟它来为测试设置合适的总和?零,可能不合适。
let sum = 0 // local state - type number example
export function addToSum (num) {
sum += num;
return sum
}
我通过添加一个仅用于测试的新函数来解决这个问题:
export function setMockNum (mock) {
num = mock
}
我也可以对函数和对象做同样的事情。
它是可读的(意图很清楚(,它让我能够向前迈进。