服务器正在工作(用 postman 测试)。如果我启动服务器并删除 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();
}));
}
我发现问题是当我运行测试时无法建立与数据库的连接。知道运行 jasmine 时如何创建与数据库的连接吗?从测试中调用 start() 或仅运行 npm start 之间有什么区别?当我使用 npm start 时,一切正常,但是当我从 jasmine 调用它时,无法建立与数据库的连接。
这是一个 typescript 问题,比如测试是使用 Node 运行的,但它们应该使用 ts-node 运行。我使用以下命令运行测试:tsc; Jasmine 。
最佳答案
我使用jasmine-ts解决了这个问题。问题是我用 tsc 运行了测试; Jasmine
关于javascript - 使用 jasmine 进行测试时出现未处理的 promise 拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56831617/