【问题标题】: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()
    

    这个文件你不能轻易测试,但至少你可以测试这个文件调用的代码。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2019-01-04
      • 2019-01-12
      • 1970-01-01
      • 2019-07-12
      相关资源
      最近更新 更多