首页 > 解决方案 > 如何在 node.js 中监视定义的变量

问题描述

请帮我!我一直在破坏我的想法,但我不知道我应该如何存根变量!我错了吗?我应该使用间谍吗?

我应该如何测试这段代码

module.exports = async () => {
  var variable = 'something';
  var taskProcessor = require('taskprocessor');
  try {
    taskProcessor(variable).then().catch();
    //blah blah 
    //blah blah
    //blah blah
    //blah blah
  } catch (error) {
    console.log(err);
  }
};

标签: node.jstestingmocha.jsstubspy

解决方案


首先,你应该知道什么是 stub 或 spy(我故意排除了 mocks)

我们使用双精度来控制方法的行为,然后改变测试方向以覆盖我们测试中的所有路径。

spy 包裹了函数,它不会替换它的功能!但是使用存根我们可以定义输出。间谍实际上是在您的敌人内部发送间谍(在这种情况下是您的代码:D),以模仿真实实体的行为并为您收集信息!

现在让我们回到你的问题!

在这种情况下,您可以使用 rewire 模块。从它的 git 页面

rewire 为模块添加了一个特殊的 setter 和 getter,因此您可以修改它们的行为以进行更好的单元测试。您可以

  • 为其他模块或全局变量(如进程)注入模拟
  • 检查私有变量
  • 覆盖模块内的变量。

所以你可以像这样设置任何变量: 在此处输入图像描述


推荐阅读