TypeError:尝试包装已经包装的内容

时间:2017-08-21 15:59:44

标签: javascript mocha sinon

我的代码:

  before(function _before() {
    this.myObject = new MyObject();
  });
  it('should', sinon.test(function() {
    const stubLog = sinon.stub(this.myObject.log, 'warn');
  }));
  it('should 2', sinon.test(function() {
    const stubLog = sinon.stub(this.myObject.log, 'warn');
  }));

sinon版本:1.17.6

为什么我在2应用测试中遇到错误TypeError: Attempted to wrap warn which is already wrapped?我应该手动恢复stubLog吗?我认为sinon.test()会为我做这件事。也许我做错了什么?

欢迎任何评论。感谢

1 个答案:

答案 0 :(得分:-1)

您是否尝试在沙盒中使用this.stub()而不是sinon.stub()

const stubLog = this.stub(this.myObject.log, 'warn');

来自official docs,一个例子:

it('should do something', sinonTest(function(){
    var spy1 = this.spy(myFunc);
    var spy2 = this.spy(myOtherFunc);
    myFunc(1);
    myFunc(2);
    assert(spy1.calledWith(1));
    assert(spy1.calledWith(2));
}));

一旦用sinon.test()包装,该函数将访问自身内部的this指针并使用它来存根/间谍其他函数。

使用它会自动为您恢复存根。