【发布时间】:2016-12-06 20:16:55
【问题描述】:
我正在尝试编写一个类,该类将读取构造它的构造函数给出的路由。但是,即使经过 1 小时的谷歌搜索,我也没有找到任何如何访问 Laravel 控制器的 getRouter 方法的信息——因为 it's a static function。
我已经尝试了很多东西,但大多数时候我都会遇到以下错误:
未捕获的错误:当不在对象上下文中时使用 $this
供应商/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();
}
}
【问题讨论】:
标签: php unit-testing laravel phpspec