我的应用程序中有一个节点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工作
'这通常意味着在测试中没有停止异步操作。'