Laravel PHPUnit模拟请求
Laravel PHPUnit模拟请求
我正在对我的控制器进行PHPUnit测试,但似乎无法正确模拟请求。
以下是控制器的代码:
use Illuminate\Http\Request; public function insert(Request $request) { // ... 这里是一些代码 if ($request->has('username')) { $userEmail = $request->get('username'); } else if ($request->has('email')) { $userEmail = $request->get('email'); } // ... 这里是一些代码 }
然后在单元测试中,
public function testIndex() { // ... 这里是一些代码 $requestParams = [ 'username' => 'test', 'email' => '[email protected]' ]; $request = $this->getMockBuilder('Illuminate\Http\Request') ->disableOriginalConstructor() ->setMethods(['getMethod', 'retrieveItem', 'getRealMethod', 'all', 'getInputSource', 'get', 'has']) ->getMock(); $request->expects($this->any()) ->method('get') ->willReturn($requestParams); $request->expects($this->any()) ->method('has') ->willReturn($requestParams); $request->expects($this->any()) ->method('all') ->willReturn($requestParams); // ... 这里是一些代码 }
问题在于,无论何时我调用 var_dump($request->has('username');
,它总是返回整个数组 $requestParams
的值。我期望它应该返回 true
,因为数组中存在 username 键。
然后,当我删除 $requestParams
中的 username 键时,它应该返回 false,因为数组中不包含 username 键。