我正在使用jest和supertest测试节点js API。使用mysql数据库。
test.js
it('user - empty password', async (done) => {
const response = await request(app)
.post(`${baseUrl}/login`)
.send({email:'abc@gmail.com',password:'abc'});
expect(response.statusCode).toEqual(200);
expect(response.body.success).toBe(true);
....
done();
});
afterall(()=>{
Pool.end();
})
在这里,我在执行测试后将终止池连接。
在控制器中,doSomething()函数还包含数据库操作,并且API响应不应等待doSomething()函数执行。
在执行doSomething()函数之后,是否有任何方法可以在不使其同步的情况下从测试中终止mysql池连接?
controller.js
login = (req,res) => {
userService.login(req.body).then((resp)=>{
// some async code
doSomething();
return res.json({
success:true,
data:resp
})
}).catch(()=>{
...
})
}
doSomething=async()=>{
const result=await Pool.query('');
return true;
}
Service.js
const login= async(data)=>{
const result=await Pool.query('');
.......
return {token:'asdfg'}
}