因此,我正在使用Chai,rewire,sinon和sinon-chai的测试套件来测试某些节点javascript。这是我第一次尝试进行设置,因此可以使用一些指针。我要测试的功能如下所示:
UserRoles.get = function(ccUrl, namespace, environment, ccToken, authPath) {
var crowdControl = new CrowdControl(ccUrl, namespace, environment, ccToken, authPath);
return q.Promise(function(resolve, reject) {
crowdControl.get().then(resolve).fail(reject).done();
});
};
在导出为UserRoles的文档中。因此,我的初始设置工作正常,在遇到麻烦时正在嘲笑以测试此功能。我正在尝试模拟新的CrowdContol部分,因此我的尝试看起来像这样:https ://jsfiddle.net/d5dczyuk/ 。
所以我正在尝试
testHelpers.sinon.stub(CrowdControl, "UserRoles");
拦截和存根
var CrowdControl = require('./crowdcontrol');
然后就跑
userRoles.get;
console.log(CrowdControl);
而且似乎未调用存根(它记录它是存根,但尚未被调用)。我也希望也需要对一下论文的pullControl.get(),但是我试图首先让这个简单的部分开始工作。不知道我需要做些什么来使它在这里工作。这是我第一次在节点中进行单元测试,我在角度上做了很多工作,可以“模拟” CrowdControl,但是我不确定它如何在节点中工作。
只是为了澄清一下,我只是检查是否将通过传入的var来调用CrowControl,我是否应该将其存根?但是我也想嘲笑一下crowdControl,这样我就可以强制get得到什么。
编辑:这是我的第二次尝试:https : //jsfiddle.net/5m5jwk5q/
我喜欢使用proxyquire进行这种测试。使用proxyquire,您可以从要测试的模块中排除需要的依赖项。因此,根据您的情况,您可以执行以下操作:
var crowdControlSpy = sinon.spy();
// Makes sure that when ./user-roles tries to require ./crowdcontrol
// our controlled spy is passed, instead of the actual module.
var UserRoles = proxyquire('./user-roles', {
'./crowdcontrol': crowdControlSpy
});
UserRoles.get(...);
expect(crowdControlSpy).to.have.been.called;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句