rx-to-async-iterator
v1.2.3
Published
Convert RxJS Observable streams to async iterators
Downloads
11
Readme
rx-to-async-iterator
Convert RxJS Observable streams to async iterators
IMPORTANT: This library only supports RxJS 4.x.
Looking for RxJS 5.0+ support? Try rxjs-to-async-iterator. (Same name but replace 'rx' with 'rxjs'.)
This module is primarily intended for use in testing more complex RxJS-based async sequences, though that doesn't preclude other use cases.
It is intended for use with mocha for testing as modified by co-mocha for coroutine/generator support.
Installation
NPM
npm install --save rx-to-async-iterator
Usage
require('co-mocha');
const Rx = require('rx');
const chai = require('chai');
const expect = chai.expect;
require('to-async-iterator');
// Side effect: Adds methods to Rx.Observable prototype.
describe('some examples', () => {
it('can verify that an Observable generates a predetermined sequence of values', function *() {
const iter = Rx.Observable.from([42, 45]).toAsyncIterator();
expect(yield iter.nextValue()).to.equal(42);
// Will throw if onError or onCompleted are produced.
expect(yield iter.nextValue()).to.equal(45);
yield iter.shouldComplete();
// Will throw if onNext or onError are produced.
iter.unsubscribe();
// Use this if ending the test before the Observable terminates and you
// want to ensure proper resource cleanup. This is not necessary if you
// reach an onComplete or onError state in a successful test.
});
it('has a shortcut form for an Observable that produces a single value', function *() {
expect(yield Rx.Observable.just(47).shouldGenerateOneValue()).to.equal(47);
// Will throw if any sequence other than onNext(47), onCompleted() is produced.
});
it('has a shortcut form for an Observable that produces no values', function *() {
expect(yield Rx.Observable.empty(47)).shouldBeEmpty();
// Will throw if onNext or onError are produced.
});
it('can verify that an Observable generates an error', function *() {
const iter = Rx.Observable.throw(new Error('expected failure')).toAsyncIterator();
expect((yield iter.shouldThrow()).message).to.equal('expected failure');
});
it('has a shortcut form for an Observable that only generates an Error', function *() {
const obs = Rx.Observable.throw(new Error('expect this fail'));
expect((yield obs.shouldThrow()).message).to.equal('expect this fail');
});
});
License
MIT