2017-11-15 1 views
0

RxJS大理石で簡単なテストを作成しようとしています。RxJS大理石テストは、createHotObservableメソッドで作成するのではなく、私自身のobservableを使用すると失敗します。

私はモカとチャイを使用しています。

私は新しいテストスケジューラをインスタンス化していると私は「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

はい、動作しません。どのhotcoldの観測方法は、与えられた大理石とsetupの内部にtestschedulerの内部に観測可能なものを作成します。 testschedulerがflushで実行されると、observableとflushを繰り返し実行します。もしcustom observableが提供されていれば、testschedulerは観察可能なものとそれらをフラッシュしないものの存在を知りません。

現在のテストスケジューラの実装には制限があります。サルパッチテストスケジューラがカスタム観測を受け入れない限り、期待どおりに動作しない可能性があります。

0

Observableを完了するのを忘れました。

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

const expected = "4|"; 
にリファクタリングすることができ
関連する問題