Мокко: как отстаивать обещание отказа?

Проверьте Utf8Checker, это простой класс, который делает именно это в чистом управляемом коде. http://utf8checker.codeplex.com

Обратите внимание: как уже указывалось, определение кодировки имеет смысл только для потоков байтов. Если у вас есть строка, она уже закодирована от кого-то по пути, который уже знал или угадал кодировку, чтобы получить строку в первую очередь.

0
задан João Otero 17 January 2019 в 06:50
поделиться

1 ответ

Это работает для меня. Например, используя chai для утверждений.

const chai = require('chai');
const expect = chai.expect;

describe('test', function () {

  function generateException() {
    throw new Error('test error');
  }


  it('should give an error', async ()=> {
    try {
      await generateException();
      expect(true).to.be.false;
    } catch(err) {
      console.log(err.message);
      expect(err.message).to.equal('test error');
    }
  })
})

Кажется, есть разница в способе использования Promise.reject() против throw new Error(). Когда функция generateException выдает ошибку, ваши тесты работают. Однако, если это было Promise.reject(), оно никогда не попадет в блок catch.

Если вы сделаете что-то вроде let result = await generateException();, вы увидите, что это ошибка, которую вы ожидаете, если функция geenerateException использует отклонение обещания.

Вы можете связать обещания с await, если захотите.

function generateException() {
  return new Promise(reject => {
   return reject(new Error('Promise Rejected');
})

it('should give an error', async ()=> {
  await generateException().catch(error => {
    expect(error.message).to.equal('Promise Rejected');

  })
});

Чтение частей этой статьи об асинхронном коде может немного помочь.

0
ответ дан Andrew Nolan 17 January 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: