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
// "not to emit from" with async function
expect(
async () => {
await somethingAsync();
ee.emit('foo', {bar: 'baz'});
},
'not to emit from',
ee,
'foo'
); // assertion failure!
Assertions
to emit from
<function> [not] to emit from <EventEmitter> <string> <any*>
<function>
may be a sync orPromise
-returning 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> to emit with error from <Error> <EventEmitter> <string> <any*>
- Use when the subject
<function>
emits, but also throws or rejects. - There is no converse of this assertion; you cannot use
[not]
.
Contributing
Please use the Angular commit message format.
Related Projects
- unexpected-events: Provides an alternative syntax, with the ability to test multiple events at once