У меня есть черта, которая разрешает экземпляр класса через статическую переменную, назначенную в поставщике услуг.Что-то вроде этого:
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
Я предполагаю, что в среде тестирования что-то другое, но не могу понять, что именно.Нужно ли делать какие-то явные контейнерные вещи при тестировании?Разве не должен работать нормальный процесс начальной загрузки?
Заранее спасибо.