javascript - 使用 jasmine 进行测试时出现未处理的承诺拒绝错误
问题描述
服务器正在工作(用邮递员测试)。如果我启动服务器并删除 beforeAll 和 afterAll 处理程序,该代码也可以工作。控制台输出为:App正在监听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 调用它时,无法建立与 db 的连接。
这是一个打字稿问题,就像测试是用 node 运行的,但它们应该用 ts-node 运行。我使用以下命令运行测试: tsc; 茉莉花。
解决方案
我使用jasmine-ts解决了它。问题是我用tsc 进行了测试;茉莉花
推荐阅读
- javascript - Firebase Firestore:使用逻辑 OR 和分页进行查询
- python - 情节:一条线,不同的颜色
- python - Clips Beginner:在 python 和 clipspy 的 clips 规则中添加常规 exp 或任何替代选择 *
- linux - 全新操作系统升级上的 MariaDb 无法运行,也无法访问旧数据库
- r - 如何在多面和分组的ggplot中着色条
- r - 在 R 中对列的一个大子集进行平方
- javascript - 如何在javascript中验证卡到期的未来日期
- onflow-cadence - 错误:受限类型不符合限制类型
- java - 'enableDefaultTyping(com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping)' 在 RedisConfig 中已弃用
- c - 从函数返回结构后,文件删除和重命名不起作用