Php 在作业类中测试功能
我喜欢测试(通过phpunit进行功能测试)作业类(Lumen队列)中的一些方法,以确保其正常工作 问题是作业类有一些作业方法,比如Php 在作业类中测试功能,php,laravel,phpunit,lumen,laravel-queue,Php,Laravel,Phpunit,Lumen,Laravel Queue,我喜欢测试(通过phpunit进行功能测试)作业类(Lumen队列)中的一些方法,以确保其正常工作 问题是作业类有一些作业方法,比如$this->Job->getJobId()和$this->release(5) 如果我从控制台运行phpunit,我会得到一个错误: 错误:在null上调用成员函数getJobId() 测试代码如下所示: /** * @test */ public function it_has_successfully_uploaded() { $j
$this->Job->getJobId()
和$this->release(5)代码>
如果我从控制台运行phpunit,我会得到一个错误:
错误:在null上调用成员函数getJobId()
测试代码如下所示:
/**
* @test
*/
public function it_has_successfully_uploaded()
{
$job = new SomeJob(['file' => ['file1.zip']]);
$job->handle();
}
如何解决此问题?您的代码正在使用$this->job->getJobId()
,但没有声明或设置该属性。您是否正在使用InteracticsWithQueue特性,但忘记将其包含在代码粘贴中
如果是,则在中设置作业属性。这个方法可以从几个地方调用,但在您的例子中,它可能是从。这是Laravel为您所做的一些内部初始化工作,您必须在测试设置中进行模拟
我将实现一个简化版本,并调用$job->setJob(新的简化版本hazaamjob(…)
在调用$job->handle()
之前,能否显示作业的来源和异常的完整堆栈跟踪?@sisve Stripped version它看起来是这样的-使用dispatch()没有问题
但是通过phpunit进行测试会导致问题,因为我正在创建某个作业
对象,这样我就可以测试而不是使用调度()
交互队列
已经包含在作业
抽象类的Lumen中@“我会回来的,那为什么它在之前被标记为拉威尔5.5,而你却谈论拉威尔?”MarcinNabiałek说我错了。甚至interacticswithqueue
也已经包含在内-它不能解决问题。所以我现在正在使用$job->setJob()