gpt4 book ai didi

node.js - 测试使用 Kue 的 Node.js 应用程序

转载 作者:行者123 更新时间:2023-12-02 15:23:19 25 4
gpt4 key购买 nike

我想测试一个使用 Kue 的应用程序以便作业队列在每次测试之前为空,并在每次测试后清除。队列应该功能齐全,我需要能够检查队列中已有作业的状态。

我试过mock-kue它运行良好,直到我必须从队列中获取作业并对其进行分析。我无法让它通过作业 ID 返回作业。

我需要能够测试的情况:

  1. 发生了一些事情,队列中应该有给定类型的作业,
  2. 发生了一些事情并产生了一份工作。发生了其他事情,该作业被删除并被另一个作业取代(重新安排或现有作业)。

看似简单,但我很难解决这个问题。欢迎大家指点。

最佳答案

根据我的经验,在本地主机上运行 redis 来运行测试比处理 kue 的模拟版本更简单。

首先,为了确保 kue 在每次测试之前是空的,可以像刷新 redis 一样简单,例如:

var kue = require('kue');
var queue = kue.createQueue();

queue.client.flushdb(function(err) {});

对于#1,kue 有一个 rangeByType() 方法可以解决您的问题:

var getJobs = function(type, state, cb) {
kue.Job.rangeByType(type, state, 0, -1, 'asc', cb);
}
// After something happens
getJobs('myJobType', 'active', function(err, jobs) {});

对于#2,您可以使用相同的方法,只需跟踪作业 ID 即可知道它已被替换:

var jobId;
getJobs('myJobType', 'active', function(err, jobs) {
assert.lengthOf(jobs, 1);
jobId = jobs[0].id;
});

// After the thing happens
getJobs('myJobType', 'active' function(err, jobs) {
assert.lengthOf(jobs, 1);
assert.notEqual(jobId, jobs[0].id);
});

如果您需要通过 ID 查询职位,您可以这样做:

kue.Job.get(jobId, function(err, job) {});

关于node.js - 测试使用 Kue 的 Node.js 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29595315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com