如何使用自定义方法和字段扩展沙盒sinon

时间:2014-11-14 21:54:25

标签: javascript mocking extend sinon

假设我想通过添加我自己的特殊存根来扩展sinon: 我可以写:

sinon.specialStub = function() {
    return this.stub().returns('SPECIAL');
};

或者我可以使用sinon.extend并写下类似的内容:

    sinon.extend(sinon, {
      specialStub: function() {
        return this.stub().returns('SPECIAL');
      }
    });

基本相同。

一切都会按预期工作,但使用var sandbox = sinon.sandbox.create();调用此方法将失败。

这是我能想到的唯一已知的解决方法:

 var sandbox =  sinon.extend(sinon.sandbox.create(), {
      specialStub: function() {
        return this.stub().returns('SPECIAL');
      }
 });

问题是 - 是否有人知道如何扩展sinon并在沙箱中查看那些扩展方法?

1 个答案:

答案 0 :(得分:1)

我知道的唯一方法是将方法添加到sinon.collection

sinon.collection.specialStub = function() { return this.stub().returns('Special'); }
var sandbox = sinon.sandbox.create();
console.log(sandbox.specialStub);

可能会考虑让sinon的维护者知道这是否很脆弱,因为它会利用他们认为是图书馆内部的东西。