2017-11-15 7 views
0

RxJS 구슬을 사용하여 간단한 테스트를 만들려고합니다.RxJS 대리석 테스트는 createHotObservable 메서드로 하나를 생성하는 대신 자체 관찰 가능을 사용할 때 실패합니다.

나는 모카와 차이를 사용하고 있습니다.

나는 새로운 테스트 스케줄러를 인스턴스화하고 그리고 난은 "Observable.of (4)"

const testScheduler = new TestScheduler(assert.deepEqual.bind(assert)); 

     const expected = "a"; 
     const expectedStateMap = { 
     a: 4 
     }; 

     testScheduler.expectObservable(Observable.of(4)).toBe(expected, expectedStateMap); 

     testScheduler.flush(); 

내 자신의 관찰 가능한을 사용하고자하기 때문에 "testScheduler.createHotObservable 방법"을 사용하지 않으 이것은 오류입니다 :

AssertionError: expected [ Array(2) ] to deeply equal [ Array(1) ] 
     + expected - actual 

      "notification": { 
      "error": [undefined] 
      "hasValue": true 
      "kind": "N" 
     -  "value": 4 
     +  "value": "4" 
      } 
     } 
     - { 
     - "frame": 0 
     - "notification": { 
     -  "error": [undefined] 
     -  "hasValue": false 
     -  "kind": "C" 
     -  "value": [undefined] 
     - } 
     - } 
     ] 

     at TestScheduler.flush (node_modules/rxjs/src/testing/TestScheduler.ts:135:12) 

어떤 아이디어가 잘못 되었나요?

답변

1

예, 작동하지 않습니다. 어떤 hot, cold 관찰 가능한 생성 방법은 주어진 대리석과 내부에 setup testcheduler 내부에 관찰 가능을 만드는 것입니다. testscheduler가 flush을 통해 실행되면 관찰 가능하고 플러시되는 모든 것을 반복합니다. 커스텀 관찰 가능 (custom observable)이 제공되면, testscheduler는 관찰 가능하고 존재하지 않는 것을 발견하지 못합니다.

현재 테스트 스케줄러 구현의 한계점입니다. 원숭이 패치 테스트 스케줄러가 맞춤 관찰 가능을 수용하지 않으면 예상대로 작동하지 않을 수 있습니다.

0

Observable을 완료하는 것을 잊었을뿐입니다.

const expected = "a"; 
    const expectedStateMap = { 
    a: 4 
    }; 

const expected = "4|"; 
에 리팩토링 할 수있다