Queue Testing

Queueing is a crucial part of many Craft apps. The Craft queue allows you to offload many resource-intensive or long-running tasks/actions to a separate process. Because of this, added support is provided to help test this part of your module or plugin.

# Running the Queue

Craft provides a simple way to run a queue and thus test your jobs. Queue testing can be performed from your unit tests. Firstly you need to ensure that your test class has a $tester property. Once this class property is declared you can call the following method:

$this->tester->runQueue(MyJob::class, [
    'param1' => 'value',
    'param2' => 'value2'
]);
  • The first argument is the class of your Job.
  • The second argument is any arguments that must be passed into your job.

Underneath Craft simply runs your job via Craft::$app->getQueue(). All methods and actions your job should perform on i.e. the database will thus be performed normally.

# Checking Queue Data

Craft provides a assertPushedToQueue method that is accessible via the $this->tester property. You must pass the description of the queue when calling this method.

Your test will fail if a job with the desired description is not found in the queue.

assertPushedToQueue only supports the default Craft queue component (craft\queue\Queue). Ensure that you are not setting a custom Queue component that does not extend the Craft class or no assertions will be made.