NodeJS 测试时使用 Reware 进行内部接口暴露

Reware 在原有 module 中增加 setter 和 getter 方法, 以便可以编辑内部功能方便单元测试.

  • 在其他模块中注入 mocks
  • 注入私有属性
  • 覆盖模块中的变量

模块注入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const rewire = require('rewire');
const complex = rewire('./demo/simple');

const fsMock = {
readFile: (path, encoding, cb) => {
// 直接返回指定的内容, 无需真正从文件中读取
cb(null, 'Success!');
}
};

// 可以设置单个值, 也可以批量设置
const revert = complex.__set__('uintvalue', 10);
// 设置后的返回值为一个方法, 使用该方法可以结束注入设置
complex.__set__({
debug: (...args) => {
console.log(args);
},
fs: fsMock
});

// 使用 mock 的方法, 这里 uintvalue 为注入的 10

// 执行回滚方法, 只回滚 complex.__set__('uintvalue', 10) 这一句
revert();

// mock 的 uintvalue 已经结束, 不再是 10
Donate - Support to make this site better.
捐助 - 支持我让我做得更好.