Laravel: тесты не выполняются при статическом назначении черты - PullRequest
0 голосов
/ 01 марта 2019

У меня есть черта, которая разрешает экземпляр класса через статическую переменную, назначенную в поставщике услуг.Что-то вроде этого:

trait Builder
{
    static $resolver;

    public static function setResolver(Closure $resolver) 
    {
        static::$resolver = $resolver;
    }

    private function resolve()
    {
        return call_user_func(static::$resolver);
    }
}

У моего поставщика услуг у меня есть что-то вроде этого:

public function register()
{
    $this->app->bind('my-builder', SomeBuilderClass:class);
}

public function boot()
{
    Builder::setResolver(function () {
        return $this->app->make('my-builder');
    });
}    

Это прекрасно работает, за исключением случаев, когда я запускаю тесты.Здесь я получаю сообщения об ошибках типа:

ReflectionException(code: -1): Class my-builder does not exist at vendor/laravel/framework/src/Illuminate/Container/Container.php:779

Я предполагаю, что в среде тестирования что-то другое, но не могу понять, что именно.Нужно ли делать какие-то явные контейнерные вещи при тестировании?Разве не должен работать нормальный процесс начальной загрузки?

Заранее спасибо.

...