Sinon存根引发尝试包装已包装的对象

dav*_*419 6 node.js express sinon

尽管有关于此的文章,但我无法在使用函数之前,之后和恢复对象之前对其进行修复。发布以下代码:-

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'),
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:-

Attempted to wrap someEvent which is already wrapped.
Run Code Online (Sandbox Code Playgroud)

Attempted to wrap some which is already wrapped.
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

在下面编辑

我甚至按照建议的方式尝试了之前和之后的功能:-

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();
});
Run Code Online (Sandbox Code Playgroud)

即使使用beforeEach和afterEach函数,也尝试过相同的错误。

Gor*_*don 4

来自sinon 文档

var Stub = sinon.stub(对象, "方法"); 用存根函数替换 object.method。可以通过调用object.method.restore()来恢复原来的功能;(或存根.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();
  });
Run Code Online (Sandbox Code Playgroud)