模拟获取参数 symfony2 和 phpunit

Héc*_*ats 1 phpunit unit-testing symfony

我想测试它具有的一个控制器:

$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);
Run Code Online (Sandbox Code Playgroud)

它返回错误,因为

 $request->expects($this->once())
        ->method('get')
        ->with('device')
        ->willReturn($device);
Run Code Online (Sandbox Code Playgroud)

失败

谢谢你!!

Héc*_*ats 6

我自己找到了答案(我只需要一个朋友):

$request->query= new ParameterBag(['device'=>$device]);