我已经尝试测试这条路线了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.
我已经用Postman手动测试了/ register端点,确实,当我使用 Form URL Encoded 数据(名称,电子邮件,密码)调用/ register端点时,它可以工作并添加新的我的数据库中的条目。如果我以多部分表格的形式发送数据,它将无法正常工作,并显示422无效输入。也许这就是我的问题所在?
干杯!