2017-07-21 11 views
2

私は別のジョブ内でジョブのディスパッチをどのようにテストできるか理解しがたいです。私はコードサンプルを提供します。Laravel [5.3 | 5.4]ジョブ内のジョブのディスパッチ

これは私の主な仕事のクラスで、私たちは、その後、我々はテストが

final class JobTest extends TestCase 
{ 
/** @test */ 
public function it_has_been_dispatched() 
{ 
    $this->expectsJobs(ChildJob::class); 
    dispatch(New FatherJob()); 
} 
} 

を以下のように設定された子ジョブ

final class ChildJob implements ShouldQueue 
{ 
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

/** 
* Create a new job instance. 
*/ 
public function __construct() 
{ 
} 

/** 
* Execute the job. 
* 
* @return void 
*/ 
public function handle() 
{ 
    \Log::info("I'm the child"); 
} 
} 

を持ってfather

final class FatherJob implements ShouldQueue 
{ 
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; 

/** 
* Create a new job instance. 
*/ 
public function __construct() 
{ 
} 

/** 
* Execute the job. 
* 
* @return void 
*/ 
public function handle() 
{ 
    \Log::info("Hello World, I'm the father."); 

    dispatch(new ChildJob()); 
} 
} 

それを呼び出すことができますこのテストは失敗しますが、それはもちろん質問全体のポイントですが、なぜですか?

は、私はいくつかの掘削を行ってきたと私は問題がコールwithoutJobs()expectsJobs()内部に依存していることを想定し、withoutJobs()が、それは仕事の残りの部分を呼び出すことはできませんので、現在のキューをdistruptようだけど、多分私は全くしていますオフトラック。

このロジックが意図されている場合、ジョブ内のジョブが呼び出されたかどうかを確認するためのテストスイートを作成するにはどうすればよいですか?

ありがとうございます。

答えて

0

expectsJobsはすべてのジョブエンジンをモックします。 dispacth()は使用できません。

$this->expectsJobs(ChildJob::class); 
$job = new FatherJob(); 
$job->handle(); 
関連する問題