由于承诺的结果,预期在柴不起作用

时间:2015-03-09 08:10:51

标签: javascript promise mocha chai chai-as-promised

我是JavaScript中的Promises的新手,虽然它似乎在某种程度上对我有用,但我无法测试'拒绝'值。

我正在通过一个错误,并希望确保它是一个错误,更重要的是,错误代码符合我的预期。

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));
            }
        }

    });

});

在摩卡的测试 - 使用chai和chai-as-promise。其他一切都在运作(我有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 个答案:

答案 0 :(得分:0)

您没有在任何地方使用chai-as-promised。如果您的第一个代码示例是storage.delete方法的主体,那么您的测试应如下所示:

it('return an error when the lookup fails', function() {
    expect(storage.delete(globalUUID)).to.be.rejectedWith(Error);
});