UNPKG

unexpected-eventemitter

Version:
120 lines (93 loc) 2.93 kB
# unexpected-eventemitter > [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) assertions for [Unexpected](http://unexpected.js.org/) ## Installation ```shell $ npm i unexpected unexpected-eventemitter --save-dev ``` - This module requires Node.js v8+, IE11, or a modern browser. - [unexpected](http://unexpected.js.org) is a _peer dependency_ of this module. - In a browser, this module is exposed as `global.unexpectedEventEmitter`. ## Example ```js 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](https://nodejs.org/api/events.html#events_class_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"](http://unexpected.js.org/assertions/any/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](https://www.conventionalcommits.org) commit message format. ## Related Projects - [unexpected-events](https://npm.im/unexpected-events): Provides an alternative syntax, with the ability to test multiple events at once ## License :copyright: 2017-2020 [Christopher Hiller](https://boneskull.com). Licensed Apache-2.0.