假设我想通过添加自己的特殊存根来扩展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并在沙盒中看到那些扩展方法?

最佳答案

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

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


可能考虑让sinon的维护者发现它是否脆弱,因为它利用了他们认为是库内部的东西。

关于javascript - 如何使用自定义方法和字段扩展沙盒sinon,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26939466/

10-12 05:23