提问者:小点点

Jest with Typescript错误:Timeout-在Jest.SetTimeout.Timeout指定的5000毫秒超时内未调用异步回调


我正在研究如何使用Jest和Nodejs创建一些测试,我实际上使用的是Typescript。当我尝试运行一个简单的测试时,通过检查响应的状态,它显示了以下错误:

Timeout-在Jest.SetTimeout指定的5000毫秒超时内未调用异步回调。Timeout-在Jest.SetTimeout指定的5000毫秒超时内未调用异步回调。错误:

我能做什么?

下面是我的代码:

Session.test.ts=>;

const request = require('supertest');
import app from '../../src/server';
describe('Authentication',() => {
    it('should authenticate with valid credentials',async() =>{
        const response = await request(app)
        .post('/sessions')
        .send({
            email: "myemail@gmail.com",
            password: "123456"
        })

        await expect(response.status).toBe(200);
    });

});

SessionController.ts=>;

import {Request, Response} from 'express';
export default class SessionController{

async store(request: Request, response: Response){
        return response.status(200);
    }
    
} 

Server.ts=>;

import express from 'express'; 
import routes from './routes';
require("dotenv").config({
    path: process.env.NODE_ENV === "test" ? ".env.test" : ".env"
  });
  
const app = express();

app.use(express.json());
app.use(routes);
app.listen(3333);

export default app;

和路由。ts:

import express from 'express';
import UsersController from './controllers/UsersController';
import SessionController from './controllers/SessionController';

const routes = express.Router();
const usersControllers = new UsersController();
const sessionController = new SessionController();

routes.post('/users',usersControllers.create);

routes.post('/sessions',sessionController.store);


export default routes;


共1个答案

匿名用户

第一件事是检查请求中是否存在某种错误,或者(更有可能)它是否保持在挂起状态,因为5秒是成吨的时间。

总之,您可以指定测试超时,如下所示

describe('Authentication',() => {
  it('foobar', async function () { // no arrow function
    this.timeout(10000)
    await myFunc()
  });
});

相关问题