运行 Laravel 使用 PHPUnit 进行测试,排队的作业似乎总是 运行 处于同步模式。如何以标准模式调度它们?
Running Laravel tests with PHPUnit, queued jobs seem to always run in sync mode. How to dispatch them in standard mode?
运行 Laravel 7 使用 'database' 驱动程序的作业队列。
前端调用 API 调度作业,并立即 return 返回状态为(已排队)的响应。当从前端 Javascript.
调用时,这工作正常
尝试用 PHPUnit 测试同一个端点,通过调用同一个 API 端点的测试,我发现作业似乎是在同步模式下分派的,即 HTTP 响应直到作业已完成,因为 ->dispatch() 方法在此之前不会 return。
两个测试都使用完全相同的开发环境——一个运行异步,另一个运行同步。
在文档中看不到任何关于此的信息。 运行 PHPUnit 时如何使作业异步排队,以便我们可以测试预期的行为?
您始终可以覆盖 phpunit.xml
文件中的 .env
配置。
<server name="QUEUE_CONNECTION" value="a_different_connection"/>
我个人更喜欢在我的测试套件中使用 sync
连接,以确保一切正常。
也可以用Queue::fake()
,上面评论里有提到
运行 Laravel 7 使用 'database' 驱动程序的作业队列。
前端调用 API 调度作业,并立即 return 返回状态为(已排队)的响应。当从前端 Javascript.
调用时,这工作正常尝试用 PHPUnit 测试同一个端点,通过调用同一个 API 端点的测试,我发现作业似乎是在同步模式下分派的,即 HTTP 响应直到作业已完成,因为 ->dispatch() 方法在此之前不会 return。
两个测试都使用完全相同的开发环境——一个运行异步,另一个运行同步。
在文档中看不到任何关于此的信息。 运行 PHPUnit 时如何使作业异步排队,以便我们可以测试预期的行为?
您始终可以覆盖 phpunit.xml
文件中的 .env
配置。
<server name="QUEUE_CONNECTION" value="a_different_connection"/>
我个人更喜欢在我的测试套件中使用 sync
连接,以确保一切正常。
也可以用Queue::fake()
,上面评论里有提到