Я пытаюсь написать модульный тест с jest/enzyme, который проверяет, был ли 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();
}
});