Я пытался протестировать этот маршрут в течение 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.Может в этом причина моей проблемы?
Ура!