我有一个特征,可以通过在服务提供者中分配的静态变量来解析类的实例。有点像这样:
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
我猜测测试环境中有些不同,但无法真正弄清楚是什么。我必须在测试中做某种显式的容器工作吗?正常的引导过程不起作用吗?
谢谢。