试图模拟/替换函数内部的函数

时间:2018-05-14 16:37:56

标签: javascript node.js sinon

这是我试图模仿的代码:

stats.totalRequests.labels('incoming').inc(x);

我试过了:

const incFunc = function inc(a) {
        return true;
    };

const stats = {
   totalRequests: {
       labels: (a, b, c) => incFunc(a)
            }
    };

module.__set__('stats', stats);

我也尝试将标签设置为sinon.stub()。 但我一直得到错误TypeError:stats.totalRequests.labels(...)。inc不是一个函数。

任何想法我怎么能做到这一点?我不需要任何功能,我只是不希望代码中的原始行做任何事情。它可以是存根/空函数或其他任何东西 非常感谢

1 个答案:

答案 0 :(得分:0)

问题是您需要让labels返回属性为inc的对象。

示例:

const stats = {
  totalRequests: {
    labels(arg) {
      console.log('labels: ' + arg);
      return {
        inc(x) {
          console.log('inc: ' + x);
        }
      };
    }
  }
};

let x = 12;
stats.totalRequests.labels('incoming').inc(x);