【问题标题】:How can I test node cron on Jest如何在 Jest 上测试节点 cron
【发布时间】:2022-01-16 07:56:01
【问题描述】:

我正在使用 supertest 包测试我的 API,我确实有一个业务逻辑,当属性 qrCodeDate 小于 Date.now() 时,User 状态变为非活动状态。

import { CronJob } from 'cron';

export default (Model) =>
    new CronJob(
        '0 1 * * *',
        async function () {
            await Model.updateMany(
                { qrCodeDate: { $lt: new Date(Date.now()) } },
                { $set: { status: 'INACTIVE', qrCodeDate: null } }
            );
        },
        null
    );

在 userModel.ts 上:

// Cron Job to verify if Date.now() > qrCodeDate
const job = CronJob(UserModel);
job.start();

users.test.ts 我做这样的事情:expect(User['status']).toBe('INACTIVE');

在我的应用程序上,我让那些 CronJob 每天运行检查前面提到的条件,无论如何,在我的测试中我不知道如何实现,还需要 TS 类型的注释行

import { CronJob } from 'cron';
jest.mock('cron');

xtest('Check if when QR Code expires, ordinary status back to INACTIVE', async () => {
        
        // (CronJob as unknown as jest.Mock)

        expect(User['status']).toBe('INACTIVE');
    });

提前致谢。

【问题讨论】:

    标签: node.js typescript testing jestjs cron


    【解决方案1】:

    您不需要在项目中测试 cron 模块。 您只需要测试调用Model.updateMany 的函数内部的逻辑。 您可以单独声明该函数而不是在参数中,为其命名并为该函数编写测试

    【讨论】:

    • 是的,我把自己弄得太复杂了,稍后再考虑,无论如何谢谢
    猜你喜欢
    • 2023-01-19
    • 2022-01-02
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    • 2017-08-16
    • 2014-09-28
    • 2021-02-24
    相关资源
    最近更新 更多