diff --git a/spec/operators/multicast-spec.ts b/spec/operators/multicast-spec.ts index 1793d9c499..88a5beb0a9 100644 --- a/spec/operators/multicast-spec.ts +++ b/spec/operators/multicast-spec.ts @@ -41,6 +41,33 @@ describe('Observable.prototype.multicast', () => { connectable.connect(); }); + it('should multicast a ConnectableObservable', (done: MochaDone) => { + const expected = [1, 2, 3, 4]; + + const source = new Subject(); + const connectable = source.multicast(new Subject()); + const replayed = connectable.multicast(new ReplaySubject()); + + connectable.connect(); + replayed.connect(); + + source.next(1); + source.next(2); + source.next(3); + source.next(4); + source.complete(); + + replayed.do({ + next(x: number) { + expect(x).to.equal(expected.shift()); + }, + complete() { + expect(expected.length).to.equal(0); + } + }) + .subscribe(null, done, done); + }); + it('should accept Subject factory functions', (done: MochaDone) => { const expected = [1, 2, 3, 4]; diff --git a/src/observable/ConnectableObservable.ts b/src/observable/ConnectableObservable.ts index 8fe0105778..896d7cdcb3 100644 --- a/src/observable/ConnectableObservable.ts +++ b/src/observable/ConnectableObservable.ts @@ -54,6 +54,8 @@ export class ConnectableObservable extends Observable { export const connectableObservableDescriptor: PropertyDescriptorMap = { operator: { value: null }, _refCount: { value: 0, writable: true }, + _subject: { value: null, writable: true }, + _connection: { value: null, writable: true }, _subscribe: { value: ( ConnectableObservable.prototype)._subscribe }, getSubject: { value: ( ConnectableObservable.prototype).getSubject }, connect: { value: ( ConnectableObservable.prototype).connect },