2016-05-12 2 views
2

Я использую мокко и Chai, чтобы проверить мой узел/Экспресс API, и я не могу понять, почему тест не достигает .END()Chai не доходя .end()

Вот тест :

it('should authenticate successfully with user credentials', function (done) { 
    agent 
     .post('/login') 
     .set('Content-Type', 'application/x-www-form-urlencoded') 
     .send({ 'username': 'username', 'password': 'password'}) 
     .end(function (err, res) { 
      console.log(res); 
      console.log('***************************Authenticated*********************************************'); 
      expect(res).to.have.status(200); 
     }); 
    done(); 
}); 

а вот маршрут я ударяя:

app.post('/login', passport.authenticate('ldapauth', { successRedirect: '/' })); 

Я полагаю, что моя проблема может быть связана с тем, что нет никакого официального ответа, а редирект, но я не уверен, как справиться с этим.

+2

Начните с перемещения 'done()' на _inside_ обработчик 'end'. – robertklep

ответ

2

Решение оказалось перемещением обратного вызова done() в мой метод .end(). Спасибо @robertklep

0

Если вы тестируете методы async int mocha, вы должны позвонить вызовом метода в функцию обратного вызова, как показано ниже.

it('should authenticate successfully with user credentials', function (done) { 
     agent 
      .post('/login') 
      .set('Content-Type', 'application/x-www-form-urlencoded') 
      .send({ 'username': 'username', 'password': 'password'}) 
      .end(function (err, res) { 
       console.log(res); 
       console.log('***************************Authenticated*********************************************'); 
       expect(res).to.have.status(200); 
       done(); 
      }); 

    }); 
Смежные вопросы