首页 > 解决方案 > 使用 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; 茉莉花。

标签: javascriptnode.jsexpressrequestjasmine

解决方案


我使用jasmine-ts解决了它。问题是我用tsc 进行了测试;茉莉花


推荐阅读