count(2)->create(); BusFacade::fake(); $this->artisan('paddle:sync-packages', [ '--dry-run' => true, '--queue' => true, ])->assertExitCode(0); BusFacade::assertDispatched(SyncPackageToPaddle::class, 2); } public function test_command_filters_packages_by_id(): void { $package = Package::factory()->create(); Package::factory()->create(); BusFacade::fake(); $this->artisan('paddle:sync-packages', [ '--dry-run' => true, '--queue' => true, '--package' => [$package->id], ])->assertExitCode(0); BusFacade::assertDispatched(SyncPackageToPaddle::class, function (SyncPackageToPaddle $job) use ($package) { return $this->getJobPackageId($job) === $package->id; }); } protected function getJobPackageId(SyncPackageToPaddle $job): int { $reflection = new \ReflectionClass($job); $property = $reflection->getProperty('packageId'); $property->setAccessible(true); return (int) $property->getValue($job); } }