虽然有关于此的帖子,我无法在使用函数和恢复对象之前使用它。发布以下代码: -
var Log = sinon.stub(hello, 'someEvent', function(type, name){
var obj = {};
obj.addData = function(data){
return;
};
obj.complete = function(){
return;
}
return obj;
}),
someVar = sinon.stub(servicecore, 'some'),
我得到的错误是: -
Attempted to wrap someEvent which is already wrapped.
和
Attempted to wrap some which is already wrapped.
有人可以帮忙吗?
编辑如下
我甚至尝试过按照建议使用前后功能: -
var Log,someVar;
before(function(){
Log = sinon.stub(hello, 'someEvent', function(type, name){
var obj = {};
obj.addData = function(data){
return;
};
obj.complete = function(){
return;
}
return obj;
});
someVar = sinon.stub(servicecore, 'some');
});
after(function(){
Log.restore();
someVar.restore();
});
尝试使用beforeEach和afterEach函数但同样的错误。
答案 0 :(得分:3)
var stub = sinon.stub(object," method");用一个替换object.method 存根功能。可以通过调用恢复原始功能 object.method.restore(); (或stub.restore();)。抛出异常 如果属性不是一个功能,以帮助避免拼写错误 存根方法。
使用after或afterEach挂钩完成测试后,通常会恢复存根。
after(function() {
// runs before all tests in this block
someVar.restore();
});
afterEach(function() {
// runs before each test in this block
someVar.restore();
});
答案 1 :(得分:0)
您正在存根someVar.some而不是someVar本身 所以您需要恢复其方法:
someVar.some.restore();
如果仍有问题,请尝试使用以下方法进行存根。
someVar.some = sinon.stub();
看起来像一样,但不是:)(在宣誓工作数小时后发现)
无论如何,让我们尝试用sinon中的沙箱将其存根,然后只恢复最后的沙箱