【问题标题】:How Test laravel successive jobs?如何测试 laravel 连续作业?
【发布时间】:2018-03-09 14:44:42
【问题描述】:

我正在使用 Laravel 5.6,应该为某些功能创建功能测试。在某些条件下,如果从第一个作业开始执行第二个作业,我如何测试分派两个作业。

看起来像这样:

class FirstJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;


    public function handle()
    {
        dispatch(new SecondJob());
    }
}

顺序断言看不到第二个Job。

Queue::assertPushed(FirstJob::class); // 断言

Queue::assertPushed(SecondJob::class); // 未断言

【问题讨论】:

  • 对于在任何时候(2021 年以上)阅读本文的每个人来说,这都不是一个好的测试,因为您正在实例化一个作业,分派它然后“处理”它,什么时候应该分派它并且完成后,检查您的测试环境是否正在同步处理任何工作,所以一切都是开箱即用的。另外,如果你在伪造Queue,那么这是没有意义的......当你尝试功能测试时应该发送它......

标签: laravel testing queue jobs


【解决方案1】:

只需发送firstJob,然后调用handle() 方法

例子:

$new_job = new FirstJob();
$new_job->dispatch();

Queue::assertPushed(FirstJob::class, function(){
    // check some job property against the expected
});

$new_job->handle();

Queue::assertPushed(SecondJob::class, function(){
    // check some job property against the expected
});

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 2011-08-15
    • 2019-04-07
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多