Я запускаю тесты Phpunit с использованием Laravel Framework версии 9.52.20. Тесты отлично работают в моей местной среде и в моем трубопроводе CI/CD. Но когда я пытаюсь запустить те же тесты в своей среде Dev, он неоднократно бросает эту ошибку: < /p>
Код: Выделить всё
Call to undefined function Illuminate\Foundation\laravel_cloud()
at vendor/laravel/framework/src/Illuminate/Foundation/Application.php:237
233▕ * @return void
234▕ */
235▕ protected function registerLaravelCloudServices()
236▕ {
➜ 237▕ if (! laravel_cloud()) {
238▕ return;
239▕ }
240▕
241▕ $this['events']->listen(
Я вижу, как эта функция определяется в поставщике/Laravel/Framework/src/illuminate/support/helpers.php
Код: Выделить всё
if (! function_exists('laravel_cloud')) {
/**
* Determine if the application is running on Laravel Cloud.
*
* @return bool
*/
function laravel_cloud()
{
return ($_ENV['LARAVEL_CLOUD'] ?? false) === '1' ||
($_SERVER['LARAVEL_CLOUD'] ?? false) === '1';
}
}
Странность заключается в том, что мои тесты Phpunit работают просто отлично в моей местной среде и в моем конвейере CI/CD. Только в моей отдельной среде разработчика я испытываю эту проблему. Должен ли я вручную ссылаться на класс Olluminate/Support/Helpers в моем классе Testcase, чтобы сделать эту функцию доступной для тестов PHPUNIT? Я предположил, что платформа Laravel автоматически включала бы такую зависимость. Но это не объясняет, почему эта конкретная среда имеет проблему, в то время как другие идентичные среды не имеют. Это сказало, что это было: < /p>
Код: Выделить всё
~$ php artisan tinker
Psy Shell v0.12.7 (PHP 8.3.19 — cli) by Justin Hileman
> function_exists('my_fake_function');
= false
> function_exists('laravel_cloud');
= true
Похоже, что функция laravel_cloud определяется и доступна для двигателя Laravel в целом. Тем не менее, что -то в моей среде заставляет во время выполнения фпунита не найти эту функцию в списке функций глобальной среды.
Подробнее здесь:
https://stackoverflow.com/questions/795 ... laravel-cl