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']);