模拟获取参数symfony2和phpunit



我想测试一个具有:

的控制器

$ 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]);

最新更新