2017-01-16 77 views
0

我有以下方法控制每当创建Sinon如何存根承诺?

initialize: function() { 
    var self = this; 
    return new View().render().then(function() { 
     bus.broadcast("INITIALIZED"); 
    }); 
} 

我想测试这种方法的控制器的新实例时调用。

it("should initialise controller", (done) => { 
     bus.subscribe("INITIALIZED", (message, payload) => done()); 
     new Controller(); 
    }); 

如何存根无极新景()渲染()与Sinon.JS使这个测试工作?

回答

1

基于信息您提供...:

it("should initialise controller", (done) => { 
    var renderStub = sinon.stub(View.prototype, 'render'); 
    // for each view.render() call, return resolved promise with `undefined` 
    renderStub.returns(Promise.resolve()); 

    bus.subscribe("INITIALIZED", (message, payload) => done()); 
    new Controller(); 

    //make assertions... 

    //restore stubbed methods to their original definitions 
    renderStub.restore(); 
}); 
0

随着兴农V2.3.1,你可以做如下。

const sinon = require('sinon'); 
let sandbox; 
beforeEach('create sinon sandbox',() => { 
    sandbox = sinon.sandbox.create(); 
}); 

afterEach('restore the sandbox',() => { 
    sandbox.restore(); 
}); 

it('should initialize controller', (done) => { 
    sandbox.stub(View.prototype, 'render').resolves(); 

    bus.subscribe("INITIALIZED", (message, payload) => done()); 
    new Controller(); 
});