JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 118
  • Score
    100M100P100Q81780F
  • License Apache License Version 2.0,

Jasmine matchers for testing ES6 Promises

Package Exports

  • jasmine-es6-promise-matchers

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (jasmine-es6-promise-matchers) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Jasmine Promise Matchers

Custom matchers for testing ES6 Promises with Jasmine 2.x.

NOTE: This library expects ES6 Promise feature to be present.

If you're testing in an old environment, e.g. PhantomJS, you need to load a polyfill.

Installing

You can install with either NPM or Bower like so:

npm i -D jasmine-es6-promise-matchers
bower install jasmine-es6-promise-matchers

Overview

Using the Jasmine matchers provided by this extension allows a simpler and cleaner flow of unit tests.

Before:

This is not only harded to read, but also unstable. If the promise is never resolved, the tests hang for a long timeout.

describe('test', function() {
  it('should resolve to something', function(done) {
    function assert(value) {
      expect(value).toBe('something');
      done();
    }

    const promise = something.withPromise();
    promise.then(assert, done.fail);
  });
});

After:

Using the matchers provided by this library your tests could instead look like this:

describe('test', function() {
  it('should resolve to something', function(done) {
    const promise = something.withPromise();
    expect(promise).toBeResolvedWith('something', done);
  });
});

Using the matchers

This library includes a couple of matchers, as shown below.

toBeRejected(done:Function)

Verify that a Promise is (or will be) rejected.

expect(promise).toBeRejected(done);
toBeRejectedWith(data:*, done:Function)

Verify that a Promise is rejected with a specific value.

expect(promise).toBeRejectedWith('something', done);

// Asymmetric matching is also supported for objects:
var partialMatch = jasmine.objectContaining({partial: 'match'});
expect(promise).toBeRejectedWith(partialMatch, done);
toBeResolved(done:Function)

Verify that a Promise is resolved.

expect(promise).toBeResolved(done);
toBeResolvedWith(data:*, done:Function)

Verify that a Promise is resolved with a specific value.

expect(promise).toBeResolvedWith('something', done);

// Asymmetric matching is also supported for objects:
var partialMatch = jasmine.objectContaining({partial: 'match'});
expect(promise).toBeResolvedWith(partialMatch, done);

Questions? Suggestions?

Open an issue or toss up a pull request if you'd like to see anything added to this library!