Тест мрамора 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 не принимает пользовательские наблюдаемые, он может работать не так, как ожидалось.