使用Jest和Supertest进行Node js API测试

时间:2020-06-30 16:32:49

标签: mysql node.js jestjs supertest

我正在使用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'}
}

0 个答案:

没有答案