Я пишу приложение с угловым 2 RC5 и модульное тестирование с использованием Karma и Jasmine.Как проверить метод, возвращающий Promise
У меня есть метод, который возвращает Promise<Foo>
(Это на вершине вызова углового-х http.post) Я хочу, чтобы запустить некоторые утверждения после этого заканчивается.
Что-то вроде этого не работает
let result = myService.getFoo();
result.then(rslt => expect(1+1).toBe(3)); // the error is lost
Это создает «Неизвестное Promise отказ» предупреждение, но ошибка подавляется и тест пройден. Как я могу запускать утверждения на основе моих разрешенных обещаний?
Примечания:
- Метод .catch() не кажется, что я после. Я не хочу регистрировать или делать что-либо, что продолжает нормальный поток программы, я хочу пропустить тест.
- Я видел код, который выглядит как
$rootScope.$digest();
. Я не уверен, что такое машинописный эквивалент такого рода вещей. Кажется, не существует способа сказать: «У меня есть обещание, я буду ждать здесь, пока у меня не будет синхронного результата».
У вас есть babel (в частности, babel-polyfill) в вашей сборке? Вы должны иметь возможность использовать async/wait, чтобы ждать выполнения обещания. – Nik
Обратите внимание, что Jasmine допускает синхронные спецификации с 'jasmine.clock' (альтернативой« $ rootScope »A1. $ Digest()'). – estus