rxjsrxjs-marbles

Cannot run the simplest rxjs-marbles tests


On a completely fresh install of ng new myapp (cli version 1.6.8, Angular 5.2.0, rxjs 5.5.6), I installed rxjs marbles.

I am having problem running the very basic test for some configuration reasons. Can any one tell me what went wrong?

import { TestBed, async } from '@angular/core/testing';
import { marbles } from 'rxjs-marbles/jasmine';
import { map } from 'rxjs/operators';
import { AppComponent } from './app.component';

describe('AppComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent,
      ],
    }).compileComponents();
  }));

  it('should see mapped values', marbles(m => {
    const values = { a: 1, b: 2, c: 3, x: 2, y: 4, z: 6 };

    const source = m.cold('--a---b---c-|', values);
    const expected = m.cold('--x---y---z-|', values);
    const result = source.pipe(map(x => x * 2));
    m.expect(result).toBeObservable(expected);
  }));
});

Console errors:

ERROR in ./node_modules/rxjs-marbles/esm5/marbles.js
Module not found: Error: Can't resolve 'rxjs/testing' in '/Users/armo/Code/rxjsmarbles/node_modules/rxjs-marbles/esm5'
 @ ./node_modules/rxjs-marbles/esm5/marbles.js 9:0-45
 @ ./node_modules/rxjs-marbles/esm5/jasmine/index.js
 @ ./src/app/app.component.spec.ts
 @ ./src \.spec\.ts$
 @ ./src/test.ts

ERROR in ./node_modules/rxjs-marbles/esm5/context-deprecated.js
Module not found: Error: Can't resolve 'rxjs/testing' in '/Users/armo/Code/rxjsmarbles/node_modules/rxjs-marbles/esm5'
 @ ./node_modules/rxjs-marbles/esm5/context-deprecated.js 10:0-45
 @ ./node_modules/rxjs-marbles/esm5/marbles.js
 @ ./node_modules/rxjs-marbles/esm5/jasmine/index.js
 @ ./src/app/app.component.spec.ts
 @ ./src \.spec\.ts$
 @ ./src/test.ts

ERROR in ./node_modules/rxjs-marbles/esm5/context-run.js
Module not found: Error: Can't resolve 'rxjs/testing' in '/Users/armo/Code/rxjsmarbles/node_modules/rxjs-marbles/esm5'
 @ ./node_modules/rxjs-marbles/esm5/context-run.js 1:0-45
 @ ./node_modules/rxjs-marbles/esm5/marbles.js
 @ ./node_modules/rxjs-marbles/esm5/jasmine/index.js
 @ ./src/app/app.component.spec.ts
 @ ./src \.spec\.ts$
 @ ./src/test.ts
ERROR in node_modules/rxjs-marbles/context.d.ts(1,22): error TS2305: Module '"/Users/armo/Code/rxjsmarbles/node_modules/rxjs/Rx"' has no exported member 'SchedulerLike'.
node_modules/rxjs-marbles/context.d.ts(2,31): error TS2307: Cannot find module 'rxjs/testing'.
node_modules/rxjs-marbles/types.d.ts(2,31): error TS2307: Cannot find module 'rxjs/testing'.

Solution

  • rxjs-marbles versions 3 and later depend upon RxJS version 6.

    If you are using RxJS version 5, you will need to use rxjs-marbles version 2, the latest version of which is 2.4.1.

    And if you use that version, for documentation, you should refer the README in that version's branch, rather than the README in master.