Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在作业类中测试功能_Php_Laravel_Phpunit_Lumen_Laravel Queue - Fatal编程技术网

Php 在作业类中测试功能

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

我喜欢测试(通过phpunit进行功能测试)作业类(Lumen队列)中的一些方法,以确保其正常工作

问题是作业类有一些作业方法,比如
$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()