Я пытаюсь написать юнит-тест с использованием jest / энзима, который проверяет, был ли вызван console.error()
в catch()
из try/catch
, но попытка сделать это либо приводит к успешному тестированию, когда оно должно бытьнеудачный, или " Ожидается, что была вызвана фиктивная функция, но она не была вызвана " ошибка.
Функция для проверки:
export const playSound = (soundName, extension = 'wav') => {
try {
SoundPlayer.onFinishedPlaying(success => success);
SoundPlayer.playSoundFile(soundName, extension);
} catch (err) {
console.error(`Error playing sound '${soundName}':`, err);
return err;
}
};
Таким образом, вышеприведенный аргумент принимает один аргумент soundName
, который является строкой, и я пытаюсь проверить, регистрируется ли ошибка консоли, когда не передается аргумент.
У меня совсем недавнопробовал нижеприведенное, которое, кажется, находится далеко, и ошибочно возвращает пройденный тест.
it('fails to play sound with no method arguments', async () => {
const consoleSpy = jest
.spyOn(console, 'error')
.mockImplementation(() => {});
try {
playSound();
expect(consoleSpy).not.toHaveBeenCalled();
} catch (err) {
expect(consoleSpy).toHaveBeenCalled();
}
});