Stub函数调用函数内部

时间:2016-09-11 18:16:22

标签: javascript node.js unit-testing sinon

我正在使用nodejs撰写网络应用程序。我有一些utils函数,我分别导出和测试。还有另外一个函数,它调用了一些我想要存根的utils函数(使用sinon)。
从我到目前为止看到的,我只能在对象上存根方法,那么我应该如何设计我的实用程序函数以便我可以测试所有这些呢?

function util1() {
    ...
}

function util2() {
    ...
}

function util3() {
    ...
    util1();
    ...
    util2();
}

export {
    util1,
    util2,
    util3
}

内部util3我想模拟(或存根)util1util2的调用。

2 个答案:

答案 0 :(得分:0)

您可以将util1和util2放在单独的模块中,然后使用某些解决方案或现有模块,例如mock-require https://github.com/boblauer/mock-require

但也许最简单的解决方案实际上是改变你的设计以使用对象。然后,您可以使用存根创建对象,并使用util3方法将其提供给对象。

答案 1 :(得分:0)

一个简单的方法是:

function util3() {
    ...
    moddule.exports.util1();
    ...
    module.exports.util2();
}

第二种方法是将所有内容都包装在地图中

var self = module.exports = {
    util3 : function() { 
       self.util2();
    },
    util2 : function() { },
..}