Skip to content

Latest commit

 

History

History
152 lines (126 loc) · 2.84 KB

File metadata and controls

152 lines (126 loc) · 2.84 KB

Asserts that the function throws an error when called.

function willThrow() {
  throw new Error('The error message');
}
expect(willThrow, 'to throw');
expect(willThrow, 'to throw error');
expect(willThrow, 'to throw exception');

In case of a failing expectation you get the following output:

expect(function willNotThrow() {}, 'to throw');
expected function willNotThrow() {} to throw
  did not throw

You can assert the error message is a given string if you provide a string as the second parameter.

expect(
  function() {
    throw new Error('The error message');
  },
  'to throw',
  'The error message'
);

In case of a failing expectation you get the following output:

expect(function () {
  throw new Error('The error message!');
}, 'to throw', 'The error message');
expected
function () {
  throw new Error('The error message!');
}
to throw 'The error message'
  expected Error('The error message!') to satisfy 'The error message'

  -The error message!
  +The error message

By providing a regular expression as the second parameter you can assert the error message matches the given regular expression.

expect(
  function() {
    throw new Error('The error message');
  },
  'to throw',
  /error message/
);

In case of a failing expectation you get the following output:

expect(function () {
  throw new Error('The error message!');
}, 'to throw', /catastrophic failure/);
expected
function () {
  throw new Error('The error message!');
}
to throw /catastrophic failure/
  expected Error('The error message!') to satisfy /catastrophic failure/

That can also just supply an error object to validate against:

expect(
  function() {
    throw new TypeError('Invalid syntax');
  },
  'to throw',
  new TypeError('Invalid syntax')
);

In case of a failing expectation you get the following output:

expect(function () {
  throw new Error('Another error');
}, 'to throw', new TypeError('Invalid syntax'));
expected
function () {
  throw new Error('Another error');
}
to throw TypeError('Invalid syntax')
  expected Error('Another error') to satisfy TypeError('Invalid syntax')
expect(function() {
  // Do some work that should not throw
}, 'not to throw');

In case of a failing expectation you get the following output:

expect(function () {
  throw new Error('threw anyway');
}, 'not to throw');
expected
function () {
  throw new Error('threw anyway');
}
not to throw
  threw: Error('threw anyway')

To test functions that require input wrap the function invocation in an anonymous function:

function willThrow(input) {
  if (input) throw new SyntaxError('The error message');
  return input;
}
expect(
  function() {
    willThrow('input.here');
  },
  'to throw',
  new SyntaxError('The error message')
);