оператор ожидания жасмина не ждет завершения блока подписки - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть функция, которую я пытаюсь проверить, которая включает в себя блок подписки.Вот упрощенная версия, чтобы проиллюстрировать то, о чем я говорю:

let obs = rx.Observable.forkJoin(
    api.get('example'),
    api.get('example2')
);    

obs.subscribe(res => {
    vm.result = res[0];
    vm.testResult = 123;
});

В своей спецификации я высмеиваю свой API и слежу за вызовами get и возвращаю такие значения:

it('should set values', () => {
    spyOn(api, 'get').and.returnValue(Promise.resolve(['test']);
    let ctrl = createController();
    ctrl.result = 1;
    ctrl.testResult = 456;
    ctrl.executeFunction();
    expect(ctrl.testResult).toEqual(123);
    expect(ctrl.result).toEqual('test');
});

Опять же, это упрощено, у меня есть много спецификаций в этом контроллере, которые работают.Главное, что я хочу упомянуть, это то, что когда я добавляю этот тест, покрытие включает в себя интересующие меня строки, которые я написал выше, так что я знаю, что макет работает и его ударили, однако операторы ожидают неудачу, и они такие, какими они были раньше.функция выполняется.

Я думаю, что проблема заключается в том, что оператор ожидания не ожидает завершения блока подписки.Я пробовал несколько решений, таких как $scope.$apply() и другие подобные функции.

У кого-нибудь есть идеи?

...