超级测试在 post 请求时超时
supertest times out on post request
我正在尝试使用 supertest 来测试一些快速路由,但是当我尝试发送 post 请求时测试抛出超时错误,尽管 get 请求实际上在工作。
这是我正在测试的路线
router.post('/', async (req, res) => {
try {
const { command, text } = req.body;
switch (command) {
case 'abc': return;
default:
console.log('123');
}
} catch (error) {
console.error(error);
}
});
这是测试
describe('test', () => {
const app: express.Express = express();
app.use('/', route);
app.use(express.urlencoded({ extended: true }));
it('test', async () => {
await request(app)
.post('/')
.send('command=john')
expect(handleSurveyListCommand).not.toHaveBeenCalled();
expect(handleSurveyRespondCommand).not.toHaveBeenCalled();
expect(consoleErrorSpy).toHaveBeenCalledTimes(1);
expect(consoleErrorSpy).toHaveBeenCalledWith(new Error('Command not found'));
});
});
这是抛出的错误
Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Error:
即使我在路由中做的唯一事情就是记录一些东西,这个测试也会失败。
这是因为当测试用例中的请求正在等待某些响应时,您没有使用响应进行响应,而是 return 尝试发送响应
router.post('/', async (req, res) => {
try {
const { command, text } = req.body;
switch (command) {
case 'abc': res.status(200).send("abc");
default:
res.status(200).send("123");
}
} catch (error) {
res.status(500).send("unknown error");
}
});
关于 req.body 未定义 -> 使用在应用程序中解析的正文
app.use(express.bodyParser());
我正在尝试使用 supertest 来测试一些快速路由,但是当我尝试发送 post 请求时测试抛出超时错误,尽管 get 请求实际上在工作。
这是我正在测试的路线
router.post('/', async (req, res) => {
try {
const { command, text } = req.body;
switch (command) {
case 'abc': return;
default:
console.log('123');
}
} catch (error) {
console.error(error);
}
});
这是测试
describe('test', () => {
const app: express.Express = express();
app.use('/', route);
app.use(express.urlencoded({ extended: true }));
it('test', async () => {
await request(app)
.post('/')
.send('command=john')
expect(handleSurveyListCommand).not.toHaveBeenCalled();
expect(handleSurveyRespondCommand).not.toHaveBeenCalled();
expect(consoleErrorSpy).toHaveBeenCalledTimes(1);
expect(consoleErrorSpy).toHaveBeenCalledWith(new Error('Command not found'));
});
});
这是抛出的错误
Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 5000 ms timeout specified by jest.setTimeout.Error:
即使我在路由中做的唯一事情就是记录一些东西,这个测试也会失败。
这是因为当测试用例中的请求正在等待某些响应时,您没有使用响应进行响应,而是 return 尝试发送响应
router.post('/', async (req, res) => {
try {
const { command, text } = req.body;
switch (command) {
case 'abc': res.status(200).send("abc");
default:
res.status(200).send("123");
}
} catch (error) {
res.status(500).send("unknown error");
}
});
关于 req.body 未定义 -> 使用在应用程序中解析的正文
app.use(express.bodyParser());