我正在尝试编写一个类,它将读取构造函数所给出的路由。然而,即使在谷歌搜索了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中是不可能的?
我的规格:
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');
}
}我的班:
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();
}
}发布于 2016-08-02 10:28:02
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);
}不建议对控制器进行规范。使控制器尽可能薄,并将“肉”移动到控制器使用的服务中。
https://stackoverflow.com/questions/38704119
复制相似问题