我有一个名为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测试,Service
和Database
类,它们工作得很好。现在我一直想为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运行服务器时,一切都正常工作。
感谢您的帮助。
1条答案
按热度按时间sxpgvts31#
我实际上弄明白了,错误信息只是误导。我的
xxxxDatabase
类正在扩展另一个类并且
Database
类本身正在导入我自己的/上面提到的Server
类而不是另一个Server
类,这造成了一个循环依赖.我仍然不知道为什么只有jest抱怨,并带有一个完全不同的错误消息,但在更改导入后,现在一切都正常了.