Nietzsche's Preposterous Moustache
Have ideas to improve npm?Join in the discussion! »

rxjs-to-async-iterator

2.1.3 • Public • Published

rxjs-to-async-iterator Build Status Coverage Status Docs js-semistandard-style

Convert RxJS Observable streams to async iterators (for RxJS 5.0+)

IMPORTANT: This library only supports RxJS 5.x (still in beta as of this writing).

Looking for RxJS 4.x support? Try rx-to-async-iterator. (Same name but replace 'rxjs' with 'rx'.)

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 rxjs-to-async-iterator

Usage

require('co-mocha');
const Rx = require('rxjs');
const chai = require('chai');
const expect = chai.expect;
require('rxjs-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.of([42, 45]).toAsyncIterator();
 
    expect(yield iter.nextValue()).to.equal(42);
      // Will throw if error or complete are produced.
    expect(yield iter.nextValue()).to.equal(45);
 
    yield iter.shouldComplete();
      // Will throw if next or error 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.of(47).shouldGenerateOneValue()).to.equal(47);
      // Will throw if any sequence other than next(47), complete() 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 next or error 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

Install

npm i rxjs-to-async-iterator

DownloadsWeekly Downloads

4

Version

2.1.3

License

MIT

Last publish

Collaborators

  • avatar