Тест мрамора RxJS завершается неудачно, когда я использую собственную наблюдаемую информацию вместо ее создания с помощью метода createHotObservable

Я пытаюсь создать простой тест с использованием мрамора RxJS.

Я использую мокко и чай.

Я создаю новый планировщик тестов и не хочу использовать "метод testScheduler.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();

Это ошибка:

 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)

Есть идеи, что не так?

2 ответа

Вы просто забыли завершить свой Observable.

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

может быть реорганизован в

  const expected = "4|";

Да, это не работает. Какие hot, cold Наблюдаемый метод создания делает, создание наблюдаемого на основе данного мрамора и setup внутренне внутри testcheduler. Когда testscheduler выполняется через flushПеребирает все наблюдаемые и сбрасываемые. Если предусмотрена настраиваемая наблюдаемая, то testcheduler не знает о существовании наблюдаемых и не очищает их.

Это всего лишь ограничение текущей реализации testscheduler - если только тестовый планировщик monkey patch не принимает пользовательские наблюдаемые, он может работать не так, как ожидалось.

Другие вопросы по тегам