Testing Queues
To test that specific jobs defined in a queue are working as expected, you can utilize the test.queues.job()
method exported from @joystick.js/test
:
/tests/queues/tasks.js
import test from '@joystick.js/test';
test.that('queue runs the tasks_report job', async (assert = {}) => {
await test.queues.job('tasks_report', {
queue: 'tasks',
payload: {
week: 'january_4',
user_id: 'abc123',
},
});
const report = await process.databases.mongodb.collection('task_reports').findOne({
user_id: 'abc123',
week: 'january_4',
})
assert.is(!!report, true);
});
Above, using the test.queues.job()
method, we make a call directly to the tasks_report
job in our tasks
queue. To verify our call succeeded, we check that the expected side-effect of a report being added to the task_reports
collection in our database exists for the user_id
on the specified week
.
The idea here is that when testing a job, we're not testing the queue functionality itself (i.e., that the job runs at a specific time). Instead, we're testing that the work being done at whatever time the job runs, runs as expected and creates the intended result.
API Reference
test.queues.job()
Function API
Function API
test.queues.job(job_name: string, options: object) => Promise;
Arguments
-
job_name string Required
The name of the job you're trying to test.
-
options object Required
The options for the job to run.
-
queue string Required
The name of the queue the job you're trying to test is defined on.
-
payload object
An optional
object
of key/value pairs representing the payload for the job.
-