node package manager

Introducing npm Enterprise add-ons. Integrate third-party dev tools into npm…

jasmine-expect

Additional matchers for the Jasmine BDD JavaScript testing library

Jasmine-Matchers

Readable tests.

The Jasmine testing framework from Pivotal Labs comes with this default set of matchers;

expect(fn).toThrow(e);
expect(instance).toBe(instance);
expect(mixed).toBeDefined();
expect(mixed).toBeFalsy();
expect(number).toBeGreaterThan(number);
expect(number).toBeLessThan(number);
expect(mixed).toBeNull();
expect(mixed).toBeTruthy();
expect(mixed).toBeUndefined();
expect(array).toContain(member);
expect(string).toContain(substring);
expect(mixed).toEqual(mixed);
expect(mixed).toMatch(pattern);

Using the default Matchers your tests and failure output might look something like this;

it('should expose the expected API', function() {
  expect(typeof record.save).toEqual('function');
});

Expected "undefined" to equal "function"

it('should distribute evenly', function() {
  expect(basket.items % 2 === 0).toEqual(true);
});

Expected false to equal true

Using Jasmine-Matchers the same tests and failure output can be written like this;

it('should expose the expected API', function() {
  expect(record).toHaveMethod('save');
});

Expected member "save" of { save : undefined } to be function.

it('should distribute evenly', function() {
  expect(basket).toHaveEvenNumber('items');
});

Expected member "items" of { items : 25 } to be even number.

npm install jasmine-expect --save-dev
bower install jasmine-expect --save-dev

Downloads are available on the releases page.

Include Jasmine Matchers after Jasmine but before your tests.

<script src="/path/to/jasmine-matchers.js"></script>

Integration is easy with the karma-jasmine-matchers plugin.

When using jasmine-node 1.x, provide the path to where Jasmine Matchers is installed as the value for --requireJsSetup.

jasmine-node --requireJsSetup node_modules/jasmine-expect/index.js test

jasmine-node 2.x has no such hooks that I'm aware of for loading helpers, in this case the following call is needed before the first test in your suite.

require('jasmine-expect');

Jasmine-Matchers-Snippets can be installed with Package Control to ease development with Jasmine Matchers in Sublime Text.

Plugin for Tern to auto-complete matchers in supported editors.

Jasmine Matchers can be used with Facebook's Jest.

// package.json 
"unmockedModulePathPatterns": [
    "jasmine-expect"
],
// some test 
import JasmineExpect from 'jasmine-expect';
// ... 
expect(someValue).toBeArrayOfObjects();

Jasmine-Matchers is tested on Travis CI and Sauce Labs against the following environments.

  • Android 4.4 on Linux
  • Android 5.1 on Linux
  • Chrome 47 on Windows 10
  • Firefox 40.0 on OS X 10.10
  • Firefox 43.0 on OS X 10.10
  • IE 10 on Windows 7
  • IE 11 on Windows 8.1
  • IE 9 on Windows 7
  • iOS 8.0 on OS X 10.10
  • iOS 8.4 on OS X 10.10
  • iOS 9.2 on OS X 10.10
  • Safari 8.0 on OS X 10.10
  • Safari 9.0 on OS X 10.11