如何测试独立的打字稿文件?

How to test a standalone typescript file?

我有一个 typescript 文件,它是 运行 独立的:

(async () => {
    try {
        const notificationService = new NotificationService();
        notificationService.notify('test');
    } catch (err) {
        logger.error(err, `error while running ${SERVICE_NAME}`);
        process.exit(1);
    }
})();

我想知道如何使用开玩笑来测试它,例如断言已调用 notify()。

我认为不可能像这样测试文件。但是,可以轻松测试函数和 类。一般准则是,如果难以测试,您应该重构。

那么你不如将其重构为一个命名和导出的函数。

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()

您无法轻松测试此文件,但至少您可以测试此文件调用的代码。