callbag-mock
v2.3.0
Published
Callbag mock with manual emitting and signal tapping
Downloads
25
Readme
callbag-mock
Callbag mock with manual emitting and signal tapping.
Useful for unit testing other callbag packages, or for triggering signals in callbag chains from non-callbag code.
npm install callbag-mock
usage
(isSource?: boolean, reporter?: function) => mock
The isSource
boolean decides whether the mock will handshake back when initialised (meaning it is a source).
A reporter
, if provided, will be called each time the mock receives a signal:
(t: 0 | 1 | 2, d: any, in: 'body' | 'talkback') => void
The third in
parameter tells you whether the signal was received in the function body or the talkback.
The mock instance has an .emit(t,d)
method for manually triggering signals:
(t: 0 | 1 | 2, d: any)
There is a .getReceivedData()
method to get all received data so far.
Use .getMessages()
if you want all messages as [t, d]
tuples.
Get references to sent talkbacks through .getTalkback()
and received talkbacks through .getPartnerTalkback()
.
You can also .checkConnection()
to see whether or not the callbag has a live connection.
example
const mock = require('callbag-mock');
const reporter = (name, dir, t, d) => {
if (t !== 0) console.log(name, dir, t, d);
}
const source = mock('source', reporter, true);
const sink = mock('sink', reporter);
source.checkConnection(); // false
sink.checkConnection(); // false
source(0, sink);
source.getTalkback() === sink.getPartnerTalkback() // true
sink === source.getPartnerTalkback() // true
source.emit(1, 'foo'); // 'sink', 'body', 1, 'foo'
sink.emit(1, 'bar'); // 'source', 'talkback', 1, 'bar'
sink.getReceivedData(); // ['foo']
source.checkConnection(); // true
sink.checkConnection(); // true