柴承诺测试拒绝超时

时间:2017-09-19 09:19:53

标签: es6-promise chai chai-as-promised

我应该如何测试拒绝:

return new Promise(function(resolve, reject){
            models.users.find({
                where: {
                    email: email
                }
            }).then(function(result){
                if(!result)
                    throw 'Invalid password'
            }).catch(function(err){
                reject(err);
            });
        });

在我的测试中:

it('should be rejected', function(){
            let data= { req: {
                email: 'alvin@.oc',
            }};

            return User.authUser(data).should.be.rejected;
        });

应该拒绝whit错误'密码无效',但我收到错误:

 Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure
it resolves.

1 个答案:

答案 0 :(得分:1)

您可能会抛出错误并测试错误消息的内容。 你不必拒绝这个承诺,因为一个例外拒绝承诺而你不应该把它包装在另一个承诺中:

   return models.users.find({
            where: {
                email: email
            }
        }).then(function(result){
            if(!result)
                throw new Error('Invalid password');
        });

并在你的测试中:

return User.authUser(data).should.be.rejectedWith(Error).and.eventually.have.property("message").equal('Invalid password');