jasmine-promises
jasmine-promises copied to clipboard
Return Promises from your Jasmine tests, rather than having to manually call `done` and `done.fail`
jasmine-promises
Write asynchronous tests easier by returning Promises from your spec functions.
No need to call done and done.fail.
describe('my fancy thing', function () {
beforeEach(function () {
return doSomePreparatoryTaskThatIsAsync();
});
it('should be extra fancy', function () {
return fancyAsync().then(function (thing) {
expect(thing).toBeFancy();
});
});
});
Benefits:
- Works with any
thenable. ✓ - Simply return a promise from a test -- no need to call
doneanddone.fail✓ - Automatic error handling when using native
Promise's'. When writing such tests manually, you have to explictly catch the error with.catchand then pass the error todone.failor rethrow. UnhandledPromiserejections are gobbled up so if you forget to do this you can miss out on debugging info. ✓ - Works with
it,fit,beforeEach,afterEach,beforeAll, andafterAll. ✓
Installation
Note: only compatible with Jasmine 2 at this point.
npm install jasmine-promises --save-dev
Then ensure that jasmine-promises is loaded before your tests are loaded. This can be done by either...
manually requiring the module at the top of your test file(s) e.g. if using browserify:
require('jasmine-promises');
describe('my fancy thing', function () {
it('should be extra fancy', function () {
return fancyAsync().then(function (thing) {
expect(thing).toBeFancy();
});
});
});
loading it via your test runner e.g. Karma:
module.exports = function(config) {
config.set({
// base path that will be used to resolve all patterns (eg. files, exclude)
basePath: '',
// frameworks to use
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['jasmine'],
// list of files / patterns to load in the browser
files: [
'node_modules/jasmine-promises/dist/jasmine-promises.js',
'test/**/*.spec.js'
],
