Supertest / Jest / Node - Невозможно проверить простой маршрут - PullRequest
0 голосов
/ 24 ноября 2018

Я пытался протестировать этот маршрут в течение 4 часов, и я не могу заставить его работать.

Итак, у меня есть такой маршрут:

api.post('/register', (req, res) => {
    let hasErrors = false
    if(!req.body.name || !req.body.email || !req.body.password){
        hasErrors = true
    }
    if(hasErrors){
        res.status(errCode.invalid_input).json({
            message: 'Invalid input'
        })
    }else{
    const NewUser = new User({
        _id : mongoose.Types.ObjectId(),
      name: req.body.name,
      email: req.body.email,
      password: req.body.password
    });
        NewUser.save().then(saved_user => {
      res.status(201).json({
        message: 'User registered',
        user: saved_user
      });
    }).catch(err => {
      res.status(500).json({
        message: err
      });
    })
  }
})

... который я тестирую с использованием Jest и Supertest:

it('/register should return 201 if valid input', (done) => {
    //mock valid user input
    const NewUser = {
        'name': 'John Wick',
        'email': 'john@wick.com',
        'password': 'secret'
    }
    request(app)
        .post('/register')
        .type('form')
        .send(NewUser)
        .expect(201)
        .end((err) => {
            if (err) return done(err)
            done()
        })
})

И тест находится на рассмотрении, и он дает мне Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

Я проверил эту конечную точку / регистр вручную сПочтальон, и действительно, когда я вызываю конечную точку / register с Form URL Encoded data (имя, адрес электронной почты, пароль), он работает и добавляет новую запись в мою базу данных.Если я отправляю данные как Составная форма , они не работают и выдают неверный ввод 422.Может в этом причина моей проблемы?

Ура!

...