Чай, как и обещал таймаут отклонения теста

Как я должен проверить отклонение:

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.

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');
Другие вопросы по тегам