首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PhpSpec中访问Laravel控制器的静态特性?

如何在PhpSpec中访问Laravel控制器的静态特性?
EN

Stack Overflow用户
提问于 2016-08-01 16:50:34
回答 1查看 297关注 0票数 1

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

未捕获错误:在未在对象上下文中使用$this时 vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php(49): eval()d码:13 堆栈跟踪:#0内部函数: Double\Illuminate\Routing\Controller\P4::getRouter()

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

我的规格:

代码语言:javascript
复制
use Illuminate\Routing\Controller;
use PhpSpec\ObjectBehavior;
use Prophecy\Argument;

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');
    }
}

我的班:

代码语言:javascript
复制
use Illuminate\Routing\Controller;

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();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-08-02 10:28:02

代码语言:javascript
复制
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);
}

不建议对控制器进行规范。使控制器尽可能薄,并将“肉”移动到控制器使用的服务中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38704119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档