如何测试具有副作用的模块?

时间:2019-05-08 00:34:51

标签: javascript node.js testing monkeypatching legacy-code

忽略它是不好的,假设我有一个Javascript文件,该文件在正常操作中是在特定上下文中运行的。此文件:

  1. 期望某些全局变量存在
  2. 定义一些功能
  3. 调用自己的某些功能
  4. 调用在全局名称空间中找到的某些函数
  5. 修改某些全局名称空间的数据

我想为此文件的内容设置一些测试,但是很挣扎。

我尝试过:

  • 通过将预期的事物放入global,然后需要模块,然后检查预期的副作用来建立全局上下文。这项工作可行,但我还没有弄清楚如何更改全局上下文并再次执行此操作,以确保每次输出均符合预期。
  • 要求使用rewire而不是要求模块,以便我可以猴子修补其某些功能以进行进一步测试。这也可以,但是仍然不理想。

哪些策略和框架可能会有所帮助?

是否有任何方法可以加载模块并访问/修补/测试其在之前声明的功能执行的功能?

0 个答案:

没有答案