Laravel 如何执行作业:phpunit期间的调度

Laravel 如何执行作业:phpunit期间的调度,laravel,phpunit,Laravel,Phpunit,在我的phpunit.xml中,我已将队列驱动程序设置为空: <env name="QUEUE_DRIVER" value="null"/> 这就是工作: public function handle() { dd('alright'); } phpunit返回 未执行DummyJob 是否可以更改phpunit.xml以便立即执行作业修补程序,就像它处理排队的邮件一样?我必须将队列驱动程序从null更改为sync 将QUEUE\u DRIVER设置为null将丢弃任何排

在我的
phpunit.xml
中,我已将
队列驱动程序设置为空:

<env name="QUEUE_DRIVER" value="null"/>
这就是工作:

public function handle()
{
    dd('alright');
}
phpunit返回

未执行DummyJob


是否可以更改
phpunit.xml
以便立即执行作业修补程序,就像它处理排队的邮件一样?

我必须将
队列驱动程序
null
更改为
sync

QUEUE\u DRIVER
设置为
null
将丢弃任何排队作业


将QUEUE_DRIVER
设置为
sync`将立即运行排队作业,因此建议用于测试目的,但不用于生产。

在测试期间测试队列功能的首选方法是使用内置模拟功能。队列的行为不同于同步到异步设置(在模型引用上设置属性将在同步中进行,而不是在异步或类似设置中进行)。断言使用正确的属性调用作业

    Queue::fake();

    $answer = 42;

    Queue::assertPushed(YourJob::class, function ($job) use ($answer) {
        return $job->answer=== $answer;
    });
这并不测试它是否实际工作,相反,您应该像这样单独测试作业

(new YourJob($answer))->handle();

$this->assertDatabaseHas('your_awesome_table', ['column' => 'value']);
我的猜测是,因为,调度认为没有工作要做。您可能需要执行类似于
ArrayDriver扩展NullDriver
的操作,并至少推入一个虚拟占位符。
(new YourJob($answer))->handle();

$this->assertDatabaseHas('your_awesome_table', ['column' => 'value']);