EventEmitter assertions for Unexpected
$ npm i unexpected unexpected-eventemitter --save-dev
- This package requires Node.js v14+ or a browser supporting ES6.
- unexpected v10+ is a peer dependency of this package.
- In a browser, this module is exposed as
globalThis.unexpectedEventEmitter
orwindow.unexpectedEventEmitter
.
import unexpected from 'unexpected';
import unexpectedEventEmitter from 'unexpected-eventemitter';
import {EventEmitter} from 'node:events';
const expect = unexpected.clone().use(unexpectedEventEmitter);
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"
const err = new Error('uh oh');
expect(
Promise.resolve().then(() => {
ee.emit('foo', {bar: 'baz'});
throw err;
}),
'to emit with error from',
ee,
'foo',
err
); // ok
<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.
<function|Promise> to emit with error from <Error> <EventEmitter> <string> <any*>
- Use when the subject
<function|Promise>
emits, but also throws or rejects. - A strict equality check is made against
Error
- There is no converse of this assertion; you cannot use
[not]
.
Please use the Conventional Commits commit message format.
- unexpected-events: Provides an alternative syntax, with the ability to test multiple events at once
©️ 2017 Christopher Hiller. Licensed Apache-2.0.