Ich habe diese Funktion zu erwarten:Jasmin: Wie Versprechen Handler nicht werfen Ausnahme
reload() {
myService.queryData()
.done(...)
.always(() => throw "fake exception"); //just to simulate the failure
}
Ich möchte, dass meine Test Nachlegefunktion und stellen Sie sicher, dass es nicht Ausnahme wirft noch das Versprechen Rückruf tut.
describe("reload", function() {
it("does not throw exception", function (done) {
spyOn(myService, "queryData").and.callFake(() => {
let deffered = $.deffered();
setTimeOut(() => deffered.reject(), 0)
return deffered.promise();
});
reload();
setTimeout(() => {
//this is evaluated after the exception has been thrown, but
//how to check whether exception has been thrown
}, 2);
});
});
EDIT: Ich könnte nicht ein Versprechen in einigen Fällen zurückkehren kann, wo der Rückgabetyp der Funktion ist bereits definiert, Lifecycle-Veranstaltung zB Komponente:
MyComponent extends React.Component {
componentDidMount() {
this.load(
galleryService.nodes().then(galleryResult => this.setState({ nodes: galleryResult.nodes }))
);
this.load(
galleryService.caches().then(cachesResult => this.setState({ caches: cachesResult.caches }))
);
}
}
var myComponent = React.createElement(MyComponent);
TestUtils.renderIntoDocument(myComponent); //this triggers the componentDidMount event and I need to make sure it won't throw error.
können Sie nicht verwenden 'Promise.all' oder' Promise.race' den Fluss in Ihrem bearbeiten Snippet zu koordinieren? – MarcoL
Ich könnte, aber ComponentDidMount wird durch das Framework (REACT) als Funktion definiert, die void zurückgibt und ich nicht direkt aufrufen. Es wird vom Framework aufgerufen, wenn ich 'TestUtils.renderIntoDocument (...)' ausführe. Ich hatte gehofft, dass ich das Problem zu Vanillejavascript isolieren kann, aber ich habe gescheitert, das Problem richtig zu formulieren ... – Liero
Ich sehe noch nicht, warum Sie eine 'Promise.all' nicht zurückgeben können, die alle Ihre Versprechen von' componentDidMount enthält 'oder faktorieren Sie den relevanten Code in eine separate, testbare Funktion, die Sie von' componentDidMount' aufrufen. –