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

时间:2018-07-14 02:27:56

标签: javascript unit-testing module mocking es6-modules

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

根据本文http://exploringjs.com/es6/ch_modules.html,我了解到:

  • 模块是单例。
  • 在ES6中,importexport上的只读视图

因此,尽管我可以导出局部变量,然后从测试中导入该局部变量,然后对其进行修改,因为它是只读的,所以我会报错。

问)如何模拟ES6模块的本地状态?输入时:

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

示例sumModule.js-如我希望的那样,我该如何模拟它来设置总和以进行测试?零,可能不合适。

let sum = 0 // local state - type number example

export function addToSum (num) {
  sum += num;
  return sum
}

1 个答案:

答案 0 :(得分:0)

我通过添加仅用于测试的新功能解决了这个问题:

export function setMockNum (mock) {
  num = mock
}

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

它可读(意图很明确),它使我可以前进。