Laravel 拉威尔没有拿起模拟课
在我的控制器中,我使用的类如下:Laravel 拉威尔没有拿起模拟课,laravel,phpunit,Laravel,Phpunit,在我的控制器中,我使用的类如下: public function book($id, CalRequest $request) { $event = $this->repo->find($id); (new CalAuthorisation()) ->setEvent($event) ->canBook(); $this->booking->book($event, $request); } 我在嘲
public function book($id, CalRequest $request)
{
$event = $this->repo->find($id);
(new CalAuthorisation())
->setEvent($event)
->canBook();
$this->booking->book($event, $request);
}
我在嘲笑一个像下面这样的班级:
$auth = \Mockery::mock(CalAuthorisation::class)->makePartial();
$this->app->bind(CalAuthorisation::class, function() use ($auth) {
return $auth;
});
$auth->shouldReceive('canBook')->once()->andReturn(true);
但是,如果我
dd
在canBook()
函数中,我仍然会进入其中。我为CalRequest
类准备了一个类似的模拟,效果很好。任何关于为什么这不起作用的建议 依赖注入是指将不同的实现注入到逻辑中。使用new关键字时,PHP
将获取某个类,并且仅获取该类Laravel
通过容器解决依赖项注入问题,因此必须使用容器才能使其工作
有两种方法,使用app()
或resolve()
。其次,您可以将类注入到Laravel
类(如作业、命令、控制器等)上的方法中,这将通过容器解决
使用resolve()
通过控制器方法注入它
public function book($id, CalRequest $request, CalAuthorisation $calAuth)
{
$event = $this->repo->find($id);
$calAuth->setEvent($event)
->canBook();
public function book($id, CalRequest $request, CalAuthorisation $calAuth)
{
$event = $this->repo->find($id);
$calAuth->setEvent($event)
->canBook();