Тестирование HTMLMediaElement.play () в Angular 7, Жасмин, Карма, Хром - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь создать тест на Angular с использованием Jasmine, который должен соответствовать обоим условиям, когда обещание HTMLMediaElement.play() разрешено и отклонено.Попытка выяснить это следующим образом:

it('should start playing audio file', async(() => {
    new Audio('path/to/my.mp3').play().then(
        () => {
            console.log('SUCCESS');
            expect(true).toBeFalsy('FROM RESOLVE');
        },
        () => {
            console.log('ERROR');
            expect(true).toBeFalsy('FROM REJECT');
        }
    );
}));

Я не могу понять, почему, когда обещание отклонено, все в порядке:

ОШИБКА (в консоли)
Ожидается, что истина будет ложной 'ОТ ОТКАЗА' (от Жасмин)

, но когда обещание выполнено, мой тест также должен провалиться, но он проходит (без ошибок от Жасмин), и я получаю следующее вконсоль:

SUCCESS
Необработанный Отклонение обещания: «ожидание» использовалось, когда не было текущей спецификации, это может быть из-за истечения времени ожидания асинхронного теста;Зона: ProxyZone;Задача: Promise.then;Значение: Ошибка: «ожидание» использовалось, когда не было текущей спецификации, это может быть из-за истечения времени ожидания асинхронного теста

Почему expect не работает, когда разрешается это обещание?

ОБНОВЛЕНИЕ

Следующие два примера сделали свое дело (спасибо @quirimmo):

it('should start playing audio file', async () => {
    await new Audio('path/to/my.mp3').play().then(
        () => {
            console.log('SUCCESS');
            expect(true).toBeFalsy('FROM RESOLVE');
        },
        () => {
            console.log('ERROR');
            expect(true).toBeFalsy('FROM REJECT');
        }
    );
});

it('should start playing audio file', (done) => {
    new Audio('path/to/my.mp3').play().then(
        () => {
            console.log('SUCCESS');
            expect(true).toBeFalsy('FROM RESOLVE');
            done();
        },
        () => {
            console.log('ERROR');
            expect(true).toBeFalsy('FROM REJECT');
            done();
        }
    );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...