Ожидания не работают в Чай как обещанные результаты

Я новичок в Promises в JavaScript, и, хотя мне кажется, что он в какой-то степени работает для меня, я не могу проверить значение 'reject'.

Я передаю сообщение об ошибке и хочу убедиться, что это ошибка и, что более важно, код ошибки соответствует ожидаемому.

return new Promise(function(resolve, reject){
    tableService.deleteEntity(config.azureTable.tableName,
                              visitor.azureEntity(), function (error, response) {

        //  If successful, go on.
        if (!error) {
            resolve(response);
        }

        //  If unsuccessful, log error.
        else {
            /*  If we know it's a resourceNotFound
                that's causing the error, return that. */
            if (error.code === 'ResourceNotFound') {
                reject(new Error('Record not found'));
            }

            //  For unexpected errros.
            else {
                reject(new Error('Table service error (delete): ' + error));
            }
        }

    });

});

Тест, в мокко - с использованием чай и чай-как обещал. Все остальное работает (у меня 24 прохождения теста) - но этот застрял!

it('return an error when the lookup fails', function (done) {

        storage.delete(globalUUID).then(function(sucess) {

            done(sucess);

        }, function(error) {

            expect(error).to.be.an(Error);
            done();

        });

    });

Любая помощь будет принята с благодарностью.

1 ответ

Вы не используете chai-as-promised в любом месте. Если ваш первый пример кода это тело storage.delete метод, то ваш тест должен выглядеть так:

it('return an error when the lookup fails', function() {
    expect(storage.delete(globalUUID)).to.be.rejectedWith(Error);
});
Другие вопросы по тегам