服务器正在工作(已通过邮递员测试)。如果启动服务器并删除beforeAll和afterAll处理程序,该代码也将起作用。控制台输出为:
应用程序在端口3200上监听!
服务器启动后
我不明白问题出在哪里。
import request from 'request';
import { start, stop } from '../src/server';
describe('A suite', function () {
beforeAll(async () => {
await start();
});
afterAll(async () => {
await stop();
});
it('server test', async () => {
const data = { tableName: 'supply' };
console.log('after server start');
const response = await new Promise((resolve, reject) => {
request.post({
url: 'http://localhost:3200/getTable',
json: data
}, (error, response, body) => {
if (error) {
reject(body);
} else {
resolve(body);
}
});
});
console.log(response);
});
});
const start = async (): Promise<void> => {
await new Promise((resolve, reject) => {
server = app.listen(port, () => {
console.log(`App listening on port ${port}!`);
resolve();
});
});
}
const stop = async (): Promise<void> => {
await new Promise((resolve, reject) => server.close(() => {
console.log('App closed successfully')
resolve();
}));
}
我发现问题是,当我运行测试时,无法建立与数据库的连接。知道我在运行茉莉花时如何创建与数据库的连接吗?从测试中调用start()或仅运行npm start有什么区别。当我使用npm start时一切正常,但是当我从茉莉花调用它时,无法建立与db的连接。
这是一个打字稿问题,类似的测试是在node上运行的,但是它们应该在ts-node上运行。我使用以下命令运行测试:tsc;茉莉花
最佳答案
我用茉莉花ts解决了。问题是我使用tsc进行了测试;茉莉花