Давайте попробуем посмотреть, что делают методы expectObservable(observable, subscriptionMarbles)
и run(callback)
.
expectObservable()
подписывается на пройденный observable
. Методы обратного вызова, передаваемые в subscribe()
метод, заполняют массив actual
(это то, что вы получаете в обратном вызове, передаваемом в TestScheduler
конструктор).
actual
массив получает Массив this.flushTests
(обернутый в flushTest
объект). flushTests
- это массив тестов, которые должны быть выполнены (помните, что вы можете вызывать методы expectObservable()
или expectSubscriptions()
несколько раз). Если вы используете метод run()
(и делаете это на основе изображения), после выполнения обратного вызова run()
вызывается метод this.flush()
. Этот метод запускает ваши тесты с помощью , вызывая this.assertDeepEqual()
обратный вызов, который вы предоставили конструктору TestScheduler
.
Значения actual
и expected
из test
передается. expected
заполняется тем же методом, где заполняется actual
, сразу после него .
Таким образом, вызов expectObservable()
только подготавливает и преобразует наблюдаемые значенияс чем-то сопоставимым (массив значений actual
и expected
). Как сказано в официальной документации, вы несете ответственность за сравнение на основе используемой вами инфраструктуры тестирования.