A testing library for then-able promises
JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
slow-tests
test-lib
test
.gitignore
.npmignore
.travis.yml
Makefile
README.md
bower.json
component.json
index.js
karma.conf.js
package.json
promise-testing.js
update-bower.js
when-environment.js

README.md

browser support Promise Testing Build Status Dependency Status devDependency Status

A testing library for then-able promises.

  • Implementation independent. Should work with any Promise/A+ conformant library. (Test suite runs against Q and When).
  • Runs in Node or directly in the browser.
  • Support for NPM and Component package managers.
  • Test/Assertion framework agnostic. Support for Mocha and Chai built in.

Quick Start

See the example;

Usage

Create a new test engine.

Node.js or Component

var PromiseTesting = require('promise-testing');
var engine = new PromiseTesting();

In the browser (included via script tag)

var engine = new PromiseEngine();

Add Chai Support.

If you are using any chai extensions (i.e. SinonChai) before calling the scanChai method.

engine.scanChai(chai);

Wrap Promises or Patch Methods.

Promises need to be wrapped by a wrapper object for testing.

var rawPromise = someService.createPromise();
var wrappedPromise = engine.wrap(rawPromise);

Functions that always return promises can be patched for convenience

engine.patch(someService,'createPromise');
//all calls to the patched function now return a wrappedPromise
var wrappedPromise1 = someService.createPromise();
var wrappedPromise2 = someService.createPromise();

Expectations

You can now use chai expectations just like you normally would, however they won't be run until the promise completes.

wrappedPromise.then.expect.result.to.equal('hello').then.notify(done);

is equivalent to

promise.then(function(result){
	expect(result).to.equal('hello');
}).then(
	function(){
		done(); //No Error - test passes
	},
	done //There was an error - pass it to done
);