NodeJS Jest输出类构造函数不是构造函数

db2dz4w8  于 2023-03-08  发布在  Node.js
关注(0)|答案(1)|浏览(104)

我有一个名为Server的类,它包含一个函数initRoutes和其他一些函数:

export class Server {
  
  app: Express;
  checklistRouter: ChecklistRouter;
  dateRouter: ChecklistRouter;
  <...>

  constructor(){
        this.app = express();
        this.checklistRouter = new ChecklistRouter(new ChecklistService(checklistDatabase));
        this.dateRouter = new DateRouter(new DateService(dateDatabase));
  }

  initRoutes() {
        this.app.use('/', this.checklistRouter.getRouter());
        this.app.use('/', this.dateRouter.getRouter());
  }

<... some other functions >
}

我已经为Router编写了jest测试,ServiceDatabase类,它们工作得很好。现在我一直想为Server类写一个测试,它似乎卡在initRoutes函数上了。我注解了Server类中的所有内容,然后在运行测试时开始取消注解,在我取消注解这个函数之前,它工作得很好。我的玩笑测试是这样的:

import { Server } from '../../src/services/server.service';

describe('Server tests', () => {
    const server = new Server();
    it('Should create "Server" instance', () => {
        expect(server).toBeInstanceOf(Server);
    });
})

错误为:

tests/unit/server.test.ts
  - Test suite failed to run
TypeError: server_service_1.Server is not a constructor

我完全被这种行为搞糊涂了,不知道还能尝试什么。我已经初始化并测试了其他所有类,没有任何问题,更重要的是,当我不使用jest运行服务器时,一切都正常工作。
感谢您的帮助。

sxpgvts3

sxpgvts31#

我实际上弄明白了,错误信息只是误导。我的xxxxDatabase类正在扩展另一个类

export class ChecklistDatabase extends Database { ... }

并且Database类本身正在导入我自己的/上面提到的Server类而不是另一个Server类,这造成了一个循环依赖.我仍然不知道为什么只有jest抱怨,并带有一个完全不同的错误消息,但在更改导入后,现在一切都正常了.

相关问题