我们正在通过FormRequest
实施资源所有权和/或输入验证。我们的控制器测试是功能测试,因此我们不会模拟Request
,而是使用$this->call($method, $url, $params, ...)
。
问题是FormRequest
是Request
的子类。有没有办法只模拟authorize()
方法,但保持Request
对象的其余部分不被嘲笑?
如果是这样,怎么样?我已经尝试用Mockery
进行部分嘲弄,但要么不起作用,要么我做错了。
$this->mock(\Namespace\Http\Requests\CustomRequest::class . '[authorize]')
->shouldReceive('authorize')
-> .......
答案 0 :(得分:0)
使用phpunit模拟系统而不是Mockery。
$request = $this->getMock(\Namespace\http\Requests\CustomRequest::class, ['authorize']);
$request->expects($this->once())->method('authorize')->willReturn(true);
希望它有所帮助;