*/ public array $calls = []; /** @var array */ public array $exitCodes = []; /** @var array{route: bool, event: bool, config: bool} */ public array $warm = ['route' => false, 'event' => false, 'config' => false]; /** The test database is always migrated, so this cannot be observed for real. */ public bool $existingInstall = true; protected function artisan(string $command, array $parameters = [], ?OutputStyle $output = null): int { $this->calls[] = $command; return $this->exitCodes[$command] ?? 0; } protected function warmCaches(): array { return $this->warm; } protected function hasRunMigrationsBefore(): bool { return $this->existingInstall; } }