javascript - Supertest / Jest / Node - 无法测试简单的路线
问题描述
我一直在尝试测试这条路线 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 端点,实际上,当我使用表单 URL 编码数据(名称、电子邮件、密码)调用 /register 端点时,它可以工作并在我的数据库中添加一个新条目。如果我将数据作为Multipart Form发送,它不起作用并给出 422 Invalid Input。也许这就是我的问题的原因?
干杯!
解决方案
推荐阅读
- php - 在 PHP 中比较 2 个数组并将公共值获取到不同的数组
- c# - 从列表 C# 动态填充 IF 语句
- python - 如何通过html按钮触发python文件 - Flask
- google-cloud-platform - 无法从 oracle weblogic 连接 gcp 服务
- python - 尝试加密和解密文本文件(Python)
- django - Django:订单集查询
- python - 将 python matplotlib 子图添加到退出图不起作用
- javascript - 如何从评估函数返回变量?
- apache-spark - 窗口函数上的 pyspark case 语句
- spring-boot - 我需要一个 JwtDecoder bean,我可以自动配置它吗?