Это одна из причин, по которой мне не нравится асинхронность, подождите, они просто синтаксический сахар над обещаниями, но они используют нормальную / синхронизированную семантику, но только по внешнему виду.
Асинхронные функции никогда не генерируют, независимо от того, насколько плоха ошибка, которую вы бросаете в нее, они просто возвращают отклоненное обещание. В вашем случае ваша функция вообще не генерирует, она возвращает отклоненное обещание, и вы не прикрепляете к этому обещанию никакого обработчика, а значит, и предупреждение. Когда вы используете асинхронную функцию или обещания, забудьте о нормальной обработке ошибок, обещания автоматически отлавливают любые ошибки и инкапсулируют их в отклоненное обещание.
Итак, в вашем случае правильный способ сделать это будет варьироваться в зависимости от вашей среды тестирования, но это может быть что-то вроде этого:
it('should throw an error when there is no available Data', () => {
channeData', async function() {
const fetchChannelSectionData = pageService.__get__('fetchData');
fetchData('pageLocation').catch(err => {
expect(err).to.be.an.error();
expect(fetchPage).to.be.calledWith('pageLocation');
console.log('----------------------2');
})
});