这是您测试节点Cron作业的方式吗?
#javascript #node #jest

我的应用程序中有一个节点cron工作,看起来像这样:


const taskOne = (time) => {
   const loadData = schedule(time , ()=>{

}
loadData.start();

}

taskOne("23 04 * * 0-6")

*我写的方式是因为相同的逻辑每天运行两次,因此不想再次写逻辑。
*

我试图测试的方式是:

describe("cron jobs", () => {
    let year, month, day;
    beforeAll(() => {
      const date = new Date();
      year = date.getFullYear();
      month = String(date.getMonth()).padStart(2, "0");
      day = String(date.getDate()).padStart(2, "0");
    });

    it("run taskOne node cron job", async () => {
      const currentHour = new Date().getHours();
      let currentMinutes = String(new Date().getMinutes()).padStart(2, "0");
      if (currentMinutes == `60`) currentMinutes = `01`;
      taskOne(`${currentMinutes} ${currentHour} * * 0-6`);
      setTimeout(() => {
        //expect statements
        done();
      }, 300000);
    });

上面的测试通过,但是这些CRON作业需要很长时间才能完成(可能是30 -60分钟),因此很难确定我何时应该使用预期陈述来做出断言。目前,我在等待5分钟之后,以验证通常在那个时候完成的一些任务。

另一个问题是在我做出断言之后,如何停止这些Cron工作

'这通常意味着在测试中没有停止异步操作。'