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
:copyright: 2017-2020 Christopher Hiller. Licensed Apache-2.0.