[英]How to sinon stub a call to external module in a tested function
我正在测试一个功能。 该函数调用了一个外部模块,这使我的测试失败了:
element.funcCall();
该函数如下所示:
function funcCall() {
external.a.b.c.doSomething();
}
它失败:未定义不是对象(评估“ external.abcdoSomething”)
我该如何对它进行存根或伪造,以致该呼叫不是真正的拨打电话。 我不需要此测试的功能。
这是我做这种事情的方式:
var element = require('element'),
external = require('external'),
sinon = require('sinon'),
expect = require('chai').expect;
describe('element.funcCall()', function() {
before(function() {
this.doSomethingStub = sinon.stub(external.a.b.c, 'doSomething');
});
it('should do something external', function() {
element.funcCall();
expect(this.doSomethingStub.called).to.be.true;
});
after(function() {
this.doSomethingStub.restore();
});
});
这就是我最终解决此问题的方法。 由于我不关心外部函数的执行,因此我伪造了它,如下所示:
var func = function() {};
external =
{ a:
{ b:
{ c:
{doSomething: func}
}
}
}
...
element.funcCall();
expect.....
这是内部函数调用被重定向到空函数,我可以测试方法的其余部分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.