Laravel:对特征进行静态分配时,测试失败

时间:2019-03-01 16:20:55

标签: php laravel unit-testing phpunit

我有一个特征,可以通过在服务提供者中分配的静态变量来解析类的实例。有点像这样:

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

我猜测测试环境中有些不同,但无法真正弄清楚是什么。我必须在测试中做某种显式的容器工作吗?正常的引导过程不起作用吗?

谢谢。

0 个答案:

没有答案