javascript - 使用 jasmine 进行测试时出现未处理的 promise 拒绝错误

标签 javascript node.js express request jasmine

服务器正在工作(用 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/

相关文章:

javascript - 在整个 Express 应用程序中实现单个数据库池的正确方法

node.js - 如果 Node 5 已安装在 Windows 上,如何安装 Node 4 版本

javascript - 操作无法使用 REST 进行,但可以以其他方式进行

node.js - Node Express,简化 mongoose 的路由回调

node.js - 如何让 Express 输出格式良好的 HTML?

javascript - 在 Angular7 中对 typescript 中的字母数字数组进行排序

javascript - Windows 7 上的 ActiveX 抛出“"Object doesn' t 支持属性或方法”错误

javascript - 如何在ckeditor中使用keyup

javascript - 为什么 HTTP 删除需要 javascript 才能工作?

node.js - 每次我想使用数据库时是否都需要打开 MongoDB 连接?