Skip to content

Instantly share code, notes, and snippets.

@kmuenkel
Last active April 28, 2022 07:50
Show Gist options
  • Save kmuenkel/32b6addb3cb12d7bf9cad8b7f1a7b145 to your computer and use it in GitHub Desktop.
Save kmuenkel/32b6addb3cb12d7bf9cad8b7f1a7b145 to your computer and use it in GitHub Desktop.
Allow PhpUnit Environment Variables to override Cached Configs
<?php
class TestCase
{
/**
* @inheritDoc
*/
protected function setUpTraits()
{
$this->artisan('optimize:clear');
$this->app = $this->createApplication();
$this->artisan('optimize');
// //This behavior is lifted from Illuminate\Foundation\Bootstrap\LoadConfiguration.
// //It prevents cached configs from overriding those established by phpunit.xml
// $configPath = realpath($this->app->configPath());
//
// $files = collect(Finder::create()->files()->name('*.php')->in($configPath))
// ->mapWithKeys(function (SplFileInfo $file) use ($configPath) {
// $directory = trim(str_replace($configPath, '', $file->getPath()), DIRECTORY_SEPARATOR);
// $directory = $directory ? str_replace(DIRECTORY_SEPARATOR, '.', $directory).'.' : $directory;
//
// return [$directory.basename($path = $file->getRealPath(), '.php') => $path];
// });
//
// $set = fn (Repository $config, string $path, string $key): Repository => tap($config)->set($key, require $path);
// $files->sortKeys(SORT_NATURAL)->reduce($set, config());
//
// \DB::setDefaultConnection(config('database.default'));
return parent::setUpTraits();
}
/**
* @inheritDoc
*/
public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
{
$files = array_merge($files, $this->extractFilesFromDataArray($parameters));
$symfonyRequest = SymfonyRequest::create(
$this->prepareUrlForRequest($uri), $method, $parameters,
$cookies, $files, array_replace($this->serverVariables, $server), $content
);
$request = Request::createFromBase($symfonyRequest);
request()->query = $request->query;
request()->attributes = $request->attributes;
request()->request = $request->request;
request()->headers = $request->headers;
request()->server = $request->server;
request()->files = $request->files;
request()->cookies = $request->cookies;
request()->setMethod($request->getMethod());
request()->setJson($request->json());
request()->setRouteResolver($request->getRouteResolver());
request()->setUserResolver($request->getUserResolver());
request()->setLaravelSession($request->getSession());
request()->setLocale($request->getLocale());
return parent::call($method, $uri, $parameters, $cookies, $files, $server, $content);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment