我想测试一个具有:
的控制器$ deviceget = strtolower($ request-> query-> get('device'));
我的问题是:如何模拟它在控制器中测试?
class SetDeviceListenerTest extends PHPUnit_Framework_TestCase {
/**
* @test
* @dataProvider deviceGetCases
*/
public function shouldSetRequestDeviceWithDeviceGetOnMasterRequest(
?string $device
): void {
$request = $this->getRequestMock();
$request->expects($this->once())
->method('get')
->with('device')
->willReturn($device);
/* @var Request $request */
$request->server = new ServerBag();
$request->headers = new HeaderBag();
$event = $this->getEventMock();
$event->expects($this->once())
->method('isMasterRequest')
->willReturn(true);
它返回错误,因为
$request->expects($this->once())
->method('get')
->with('device')
->willReturn($device);
失败
谢谢!
我自己找到了答案(我只需要一个朋友):
$request->query= new ParameterBag(['device'=>$device]);