1

我应该如何测试拒绝:

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

它应该被拒绝错误“无效密码”,但我得到错误:

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

1 回答 1

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');
于 2017-09-19T12:28:49.563 回答