unexpected-eventemitter

2.4.0 • Public • Published

unexpected-eventemitter

EventEmitter assertions for Unexpected

Installation

$ npm i unexpected unexpected-eventemitter --save-dev
  • This module requires Node.js v8+, IE11, or a modern browser.
  • unexpected is a peer dependency of this module.
  • In a browser, this module is exposed as global.unexpectedEventEmitter.

Example

const unexpected = require('unexpected');
const {EventEmitter} = require('events');

const expect = unexpected.clone().use(require('unexpected-eventemitter'));

const ee = new EventEmitter();

// "to emit from" with sync function
expect(
  () => {
    ee.emit('foo', {bar: 'baz'});
  },
  'to emit from',
  ee,
  'foo',
  {
    bar: 'baz',
  }
); // ok

// "to emit from" with async function
expect(
  async () => {
    await somethingAsync();
    ee.emit('foo', {bar: 'baz'});
  },
  'to emit from',
  ee,
  'foo',
  {
    bar: 'baz',
  }
); // ok

// "to emit from" with Promise
expect(
  somethingAsync().then(() => {
    ee.emit('foo', {bar: 'baz'});
  }),
  'to emit from',
  ee,
  'foo',
  {
    bar: 'baz',
  }
); // ok

// "not to emit from" with async function
expect(
  async () => {
    await somethingAsync();
    ee.emit('foo', {bar: 'baz'});
  },
  'not to emit from',
  ee,
  'foo'
); // assertion failure!

// "to emit with error from"
expect(
  Promise.resolve().then(() => {
    ee.emit('foo', {bar: 'baz'});
    throw new Error('uh oh');
  }),
  'to emit with error from',
  ee,
  'foo',
  /uh oh/
); // ok

Assertions

to emit from

<function|Promise> [not] to emit from <EventEmitter> <string> <any*>

  • <function|Promise> may be a Promise, async, or synchronous function
  • <EventEmitter> may be a duck-typed Node.js EventEmitter
  • <string> is the event name
  • <any*> corresponds to zero (0) or more values which may be emitted. Do not use an array unless you expect the value to be an array!
  • An EventEmitter emitting more values than expected will not fail an assertion.
  • Values are checked with "to satisfy" for flexibility.

to emit with error from

<function|Promise> to emit with error from <Error> <EventEmitter> <string> <any*>

  • Use when the subject <function|Promise> emits, but also throws or rejects.
  • There is no converse of this assertion; you cannot use [not].

Contributing

Please use the Conventional Commits commit message format.

Related Projects

  • unexpected-events: Provides an alternative syntax, with the ability to test multiple events at once

License

©️ 2017-2020 Christopher Hiller. Licensed Apache-2.0.

Package Sidebar

Install

npm i unexpected-eventemitter

Weekly Downloads

214

Version

2.4.0

License

Apache-2.0

Unpacked Size

20.3 kB

Total Files

6

Last publish

Collaborators

  • boneskull