如何在Laravel 5.1中仅模拟Form Request中的authorize()方法?

时间:2015-08-27 17:06:30

标签: unit-testing laravel mocking laravel-5 laravel-5.1

我们正在通过FormRequest实施资源所有权和/或输入验证。我们的控制器测试是功能测试,因此我们不会模拟Request,而是使用$this->call($method, $url, $params, ...)

问题是FormRequestRequest的子类。有没有办法只模拟authorize()方法,但保持Request对象的其余部分不被嘲笑?

如果是这样,怎么样?我已经尝试用Mockery进行部分嘲弄,但要么不起作用,要么我做错了。

$this->mock(\Namespace\Http\Requests\CustomRequest::class . '[authorize]')
    ->shouldReceive('authorize')
    -> .......

1 个答案:

答案 0 :(得分:0)

使用phpunit模拟系统而不是Mockery。

$request = $this->getMock(\Namespace\http\Requests\CustomRequest::class, ['authorize']);
$request->expects($this->once())->method('authorize')->willReturn(true);
希望它有所帮助;