Тест Чая на ошибку, брошенную внутрь .then - PullRequest
0 голосов
/ 24 мая 2019

Когда запрос от salesforce возвращается в виде пустого массива, мы отлавливаем это внутри .then () и генерируем ошибку, которую я могу вызвать console.log и увидеть внутри .catch ().Однако я испытываю трудности с тестированием этого сообщения об ошибке.

Я пробовал chai-as-обещание и to.eventually.equal ('некоторая строка'), но вернулся как AssertionError: ожидается, что неопределенное значение равно'Нет кампаний за текущий период.'

cosnt campaignMember = {

  getCampaignMembers: async () => {
    await login();
    return conn.sobject('CampaignMember')
      .select('*')
      .then((result) => {
        if (!result[0]) {
          throw Error('No campaigns for current period.');
        }
        return result;
      })
      .catch((err) => {
        log.error(`Could not get paid current campaigns ${err}`);
      });
  },
}
module.exports = campaignMember

TEST

it('should pass', async () => {
    await otherAsyncMethod();
    await expect(campaignMember.getCampaignMembers(currentParent)).to.eventually.equal('No campaigns for current period.');
  });

Я хочу иметь возможность проверить само сообщение об ошибке.

1 Ответ

0 голосов
/ 24 мая 2019

Я нашел решение в другой статье stackoverflow с этой ссылкой на комментарий к проблеме github. https://github.com/chaijs/chai/issues/882#issuecomment-322131680 Мне также пришлось удалить catch из моего асинхронного метода getCampaignMembers .:

cosnt campaignMember = {

  getCampaignMembers: async () => {
    await login();
    return conn.sobject('CampaignMember')
      .select('*')
      .then((result) => {
        if (!result[0]) {
          throw Error('No campaigns for current period.');
        }
        return result;
      })
      .catch(err => throw Error(err));
  },
}
module.exports = campaignMember

TEST

it('should pass', async () => {
  await otherAsyncMethod();

  await campaignMember. getCampaignMembers(currentParent).catch((err) => {
    expect(err).to.be.an('error').with.property('message', 'Error: No campaigns for current period.');
  });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...