J'ai du mal à comprendre comment je pourrais tester un envoi d'un emploi dans un autre emploi. Je vais fournir un exemple de code.Laravel [5.3 | 5.4] test de répartition du travail dans un emploi
Ceci est ma principale catégorie d'emplois, nous pouvons l'appeler 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());
}
}
Ensuite, nous avons le travail des enfants
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");
}
}
Le test a été défini comme suit
final class JobTest extends TestCase
{
/** @test */
public function it_has_been_dispatched()
{
$this->expectsJobs(ChildJob::class);
dispatch(New FatherJob());
}
}
Ce test échoue, bien sûr c'est tout le point de la question, mais pourquoi?
Je l'ai fait quelques recherches et je suppose que le problème repose sur l'appel withoutJobs()
à l'intérieur expectsJobs()
, il semble que la file d'attente withoutJobs()
distrupt actuelle ainsi il ne permet pas d'appeler le reste des emplois mais peut-être que je suis tout à fait hors piste.
Si cette logique est prévue, comment puis-je créer une suite de tests qui me permet de vérifier si le travail dans un travail a été appelé?
Merci à l'avance.