Как исправить Promise AssertionError с тестом mocha для nodejs - PullRequest
0 голосов
/ 01 февраля 2019

Я новичок в программировании nodejs и тестировании mocha.

Я пытаюсь создать тестовый пример mocha с сообщением об ошибке Promise.resolve, но assert.throws не работает с ним

У меня естьпопробованная функция (выбрасывает assert) [https://nodejs.org/api/assert.html#assert_assert_throws_fn_error_message]

index.js

    const reqData = JSON.parse(data);
    return Promise.resolve()
        .then(() => {
            if(reqData){
                throw new Error(
                  'This new error thows!'
                );
            }

            console.log('It works!!');
        })
        .then(() => {
                console.log('work completed');
            }
        )
}

index.test.js

it('getResult fails without data', async () => {
        const error = new Error(
            'This new error thows!'
        );
        const data = {}
        const err = await assert.throws(
            () => {getResult(data)},
            Error,
            'This new error thows!'
        );
        assert.deepStrictEqual(err, error);
    }
);

строка ожидает assert.throwsвыдача ошибки

AssertionError [ERR_ASSERTION]: отсутствует ожидаемое исключение (ошибка).

Заранее спасибо

1 Ответ

0 голосов
/ 01 февраля 2019

assert.throws ожидает функцию, которая выдает ошибку.Это не то же самое, что отклоненное обещание, которое в основном является объектом.

Другая проблема состоит в том, что функция не возвращает getResult(data) обещание.

Утверждение фактически непроверьте, имеет ли ошибка This new error thows!, вместо этого это приводит к ошибке с этим сообщением в случае сбоя.

assert в Узле 10 и выше поддерживает обещания .Должно быть:

await assert.rejects(
    () => getResult(data),
    {
      constructor: Error,
      message: 'This new error thows!'
    },
    'Promise not rejected'
);
...