Mocha TDD, Chai-http не регистрирует никаких ответов

Я пытаюсь протестировать api аутентификации с помощью chai-http, однако я не могу получить никакого ответа для этого конкретного блока -

describe('Authenticate user', () => {
it('Should Authenticate user', () => {
    let server = require(process.cwd() + "/server.js")
    let token
    chai.request(server)
        .post('/api/authenticate')
        .send({
            "userid": "Jeetendra",
            "password": "abcd1234"
        })
        .then(res => {
            console.log('Inside authenticate result block')
            console.log(res)
            token = res.body.data
        },err => {
           console.log('Inside authenticate error block')
            // token = res.body.data
            console.log(err)
        })
  })
})

Для приведенного выше блока кода я не печатаю никакие журналы. Может ли кто-нибудь помочь, что мне здесь не хватает?


person Jeet    schedule 14.03.2017    source источник


Ответы (2)


Похоже, ваш код работает асинхронно. Вам нужно передать обратный вызов done в свой тестовый пример, а затем вызвать его, чтобы отметить завершение теста.

it('Should Authenticate user', (done) => {
    let server = require(process.cwd() + "/server.js")
    let token
    chai.request(server)
        .post('/api/authenticate')
        .send({
            "userid": "Jeetendra",
            "password": "abcd1234"
        })
        .then(res => {
            console.log('Inside authenticate result block')
            console.log(res)
            token = res.body.data
            done()
        },err => {
           console.log('Inside authenticate error block')
            // token = res.body.data
            console.log(err)
            done(err)
        })
  })
person LostJon    schedule 15.03.2017
comment
Это все еще доставляет мне проблемы, обещание никогда не будет решено. - person Jeet; 26.05.2017
comment
оберните все это в блок try-catch .... если вы столкнетесь с проблемами urllib2, у вас может не быть обещанного возврата, отклонения или повышения. - person LostJon; 26.05.2017

Мокко Готча

Взято из документов Mocha:

Передача функций стрелок (лямбды) в Mocha не рекомендуется. Из-за лексической привязки этого такие функции не могут получить доступ к контексту Mocha.

Использование done() вида убивает цель Promise в целом. Обычно проблема решается простой заменой => на function(){} в it.

describe('Authenticate user', () => {
  it('Should Authenticate user', function(){ // use function rather than arrow
   let server = require(process.cwd() + "/server.js")
   let token
   chai.request(server)
     .post('/api/authenticate')
     .send({
       "userid": "Jeetendra",
       "password": "abcd1234"
     })
    .then(res => {
      console.log('Inside authenticate result block')
      console.log(res)
      token = res.body.data
    },err => {
      console.log('Inside authenticate error block')
      // token = res.body.data
      console.log(err)
    })
  })
})
person T.Chmelevskij    schedule 20.08.2017
comment
Спасибо за ваш ответ. Я обязательно буду иметь это в виду. - person Jeet; 20.08.2017