【问题标题】:How to test a standalone typescript file?如何测试独立的打字稿文件?
【发布时间】:2021-08-13 14:34:25
【问题描述】:
我有一个可以独立运行的打字稿文件:
(async () => {
try {
const notificationService = new NotificationService();
notificationService.notify('test');
} catch (err) {
logger.error(err, `error while running ${SERVICE_NAME}`);
process.exit(1);
}
})();
我想知道如何使用玩笑来测试它,例如断言调用了 notify()。
【问题讨论】:
标签:
typescript
jestjs
ts-jest
【解决方案1】:
我认为不可能测试这样的文件。然而,函数和类可以很容易地测试。一般准则是,如果很难测试,则应重构。
那么不如将它重构为一个命名和导出的函数。
export async bootNotificationService() {
try {
const notificationService = new NotificationService();
notificationService.notify('test');
} catch (err) {
logger.error(err, `error while running ${SERVICE_NAME}`);
process.exit(1);
}
}
现在您可以导入该函数,模拟jest.spyOn(process, 'exit'),也可能模拟NotificationService,然后运行该函数。
而且这段代码过去的任何地方现在都可以替换为:
import bootNotificationService from './boot-notification-service'
bootNotificationService()
这个文件你不能轻易测试,但至少你可以测试这个文件调用的代码。