如何在PhpSpec中访问Laravel控制器的静态属性



我正在尝试编写一个类,该类将读取由构造它的构造函数给定的路由。然而,即使在谷歌搜索了1小时后,我也没有找到任何如何访问Laravel Controller的getRouter方法的方法,因为它是一个静态函数。我尝试了很多东西,但大多数时候我都会出现以下错误:

未捕获错误:在
中不在对象上下文中时使用$thisvendor/phpspec/previce/src/Previcecy/Doubler/Generator/ClassCreator.php(49):
eval()的代码:13
堆栈跟踪:#0[内部函数]:Double\Illuminate\Routing\Controller\P4::getRouter()

我如何才能做到这一点,或者这在PhpSpec中是不可能的吗?

我的规格:

use IlluminateRoutingController;
use PhpSpecObjectBehavior;
use ProphecyArgument;
class OptionDescriberSpec extends ObjectBehavior
{
    function let(Controller $controller)
    {
      $this->beConstructedWith($controller);
    }
    function it_should_read_the_aviable_routes_of_the_controller()
    {
        $this->getController()->getRouter()->shouldReturn('Router');
        $this->render()->shouldReturn('Router');
    }
}

我的班级:

use IlluminateRoutingController;
class OptionDescriber
{
    /**
     * @var Controller
     */
    protected $controller;
    /**
     * OptionDescriber constructor.
     *
     * @param Controller $controller
     */
    public function __construct(Controller $controller)
    {
        $this->controller = $controller;
    }
    public function render()
    {
        return $this->controller->getRouter();
    }
}
function it_should_read_the_aviable_routes_of_the_controller(Controller $controller, Router $router)
{
    $this->getController()->willReturn($controller);
    $controller->getRouter()->willReturn($router);
    $this->render()->shouldReturn($router);
}

总之,不建议指定控制器。使控制器尽可能薄,并将"肉"移动到控制器使用的服务中。

相关内容

  • 没有找到相关文章

最新更新