繁体   English   中英

如何延迟测试 Laravel 作业?

[英]How to test Laravel Job with Delay?

我有一份因动态值而被延迟的工作:

SomeJob::dispatch()->delay($time);

PHPUnit中,我们可以测试作业是否已发送,但有没有办法检查该作业是否在特定$time之后发送?

快速搜索出现了许多关于这样做的文章。 调用Queue::fake()然后断言作业被放置在队列中。 在此断言中,您可以确认它有延迟。

<?php

namespace Tests\Feature;

use App\Jobs\SomeJob;
use Illuminate\Support\Facades\Queue;
use Tests\TestCase;

class ExampleTest extends TestCase
{
    public function testJobDelayed()
    {
        Queue::fake();

        // [...] Run code that dispatches the job

        // Assert that Job was pushed with a delay
        Queue::assertPushed(SomeJob::class, fn ($job) => !is_null($job->delay));
    }
}

资料来源: https://mauricius.dev/test-laravel-job-delayed-in-queue/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM