EventEmitter assertions for Unexpected
npm install unexpected-eventemitter> EventEmitter assertions for Unexpected
``shell`
$ 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.
`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
`
- may be a Promise, async, or synchronous function
- may be a duck-typed Node.js EventEmitter
- is the event name
- 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!EventEmitter
- An emitting _more_ values than expected _will not_ fail an assertion.
- Values are checked with "to satisfy" for flexibility.
- Use when the subject emits, but _also_ throws or rejects.[not]`.
- There is no converse of this assertion; you cannot use
Please use the Conventional Commits commit message format.
- unexpected-events: Provides an alternative syntax, with the ability to test multiple events at once
:copyright: 2017-2020 Christopher Hiller. Licensed Apache-2.0.