LaravelRUS / SleepingOwlAdmin

🦉 Administrative interface builder for Laravel (Laravel admin)
http://sleepingowladmin.ru/
MIT License
805 stars 217 forks source link

Не запускается второй и последующие тесты #693

Closed loginov-rocks closed 7 years ago

loginov-rocks commented 7 years ago

Версия в композере

"laravel/framework": "5.2.*", "laravelrus/sleepingowl": "^4.95",

Что надо сделать что бы увидеть ошибку?

Написать два или более тестов в своём приложении и запустить phpunit

Что должно сработать?

Должны запуститься все тесты

Что сработало?

Первый тест запускается, второй нет, fatal error:

PHP Fatal error:  Cannot redeclare class App\Admin\Sections\Users in ...\app\Admin\Sections\Users.php on line 124
...
PHP  22. SleepingOwl\Admin\Providers\AdminServiceProvider->registerBootstrap() ...\vendor\laravelrus\sleepingowl\src\Providers\AdminServiceProvider.php:109

Решение

Очевидно, файлы подключаются по несколько раз, нужно здесь https://github.com/LaravelRUS/SleepingOwlAdmin/blob/master/src/Providers/AdminServiceProvider.php#L172 заменить require $file; на require_once $file;

ghost commented 7 years ago

@1oginov тесты откуда запускаешь?

loginov-rocks commented 7 years ago

phpunit из корня проекта со стандартным phpunit.xml, тесты в tests/:

D:\...\Back-end>phpunit
PHPUnit 4.8.36 by Sebastian Bergmann and contributors.

.PHP Fatal error:  Cannot redeclare class App\Admin\Sections\TorqueParameters in D:\...\Back-end\app\Admin\Sections\TorqueParameters.php on line 124
PHP Fatal error:  Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' with message 'Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.' in D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Container\Container.php:748
Stack trace:
#0 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Container\Container.php(629): Illuminate\Container\Container->build('Illuminate\\Cont...', Array)
#1 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(697): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)
#2 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php(154): Illuminate\Foundation\Application->make('Illuminate\\Cont...')
#3 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php(79): Illuminate\Foundati in D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 748

Fatal error: Cannot redeclare class App\Admin\Sections\TorqueParameters in D:\...\Back-end\app\Admin\Sections\TorqueParameters.php on line 124

Fatal error: Uncaught exception 'Illuminate\Contracts\Container\BindingResolutionException' with message 'Target [Illuminate\Contracts\Debug\ExceptionHandler] is not instantiable.' in D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Container\Container.php:748
Stack trace:
#0 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Container\Container.php(629): Illuminate\Container\Container->build('Illuminate\\Cont...', Array)
#1 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(697): Illuminate\Container\Container->make('Illuminate\\Cont...', Array)
#2 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php(154): Illuminate\Foundation\Application->make('Illuminate\\Cont...')
#3 D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Foundation\Bootstrap\HandleExceptions.php(79): Illuminate\Foundati in D:\...\Back-end\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 748

После того, как меняю require $file; на require_once $file;, всё ОК.