2017-01-16 4 views
0

Ich habe Controller mit folgenden Methode, die immer dann, wenn neue Instanz von einem Controller aufgerufen wird, wirdSinon Wie Promise zu stubben?

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

Ich möchte diese Methode testen.

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

Wie Versprechen neue Ansicht(), um Stummel machen() mit Sinon.JS, damit dieser Test funktioniert?

Antwort

1

Basierend auf Informationen, die Sie haben ... zur Verfügung gestellt:

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

Mit Sinon v2.3.1, können Sie es wie folgt zu tun.

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(); 
}); 
Verwandte Themen