Skip to content

Instantly share code, notes, and snippets.

@GWillmann
Last active March 31, 2018 07:37
Show Gist options
  • Save GWillmann/96a1223b64a52a8d0ccc1b89bdf8778f to your computer and use it in GitHub Desktop.
Save GWillmann/96a1223b64a52a8d0ccc1b89bdf8778f to your computer and use it in GitHub Desktop.
Test controller with a stubbed ParamConverter
<?php
// Bunch of use ...
class UserControllerTest extends WebTestCase
{
function setUp()
{
$this->client = static::createClient();
}
function testItRendersShowPage()
{
$user = new User();
$entityRepository = $this->getMockBuilder(EntityRepository::class)
->disableOriginalConstructor()
->getMock();
$entityRepository->expects($this->any())
->method('find')
->willReturn($user);
$objectManager = $this->getMockBuilder(ObjectManager::class)
->disableOriginalConstructor()
->getMock();
$objectManager->expects($this->any())
->method('getRepository')
->willReturn($entityRepository);
$managerRegistry = $this->getMockBuilder(ManagerRegistry::class)
->setMethods(array('getManagerForClass'))
->disableOriginalConstructor()
->getMockForAbstractClass();
$managerRegistry->expects($this->any())
->method('getManagerForClass')
->willReturn($objectManager);
$doctrineParamConverter =
$this->getMockBuilder(DoctrineParamConverter::class)
->setMethods(array('__construct', 'supports'))
->setConstructorArgs(array($managerRegistry))
->getMock();
$doctrineParamConverter
->method('supports')
->willReturn(true);
$paramManager = $this->getMockBuilder(ParamConverterManager::class)
->setMethods(array('add', 'all'))
->disableOriginalConstructor()
->getMock();
$paramManager->add($doctrineParamConverter, 10);
$paramManager
->method('all')
->willReturn([$doctrineParamConverter]);
$paramListener = $this->getMockBuilder(ParamConverterListener::class)
->setMethods(array('__construct'))
->setConstructorArgs(array($paramManager))
->getMock();
$this
->client
->getContainer()
->set('sensio_framework_extra.converter.listener', $paramListener);
$crawler = $this->client->request('GET', '/user/1');
$this->assertEquals(
200, $this->client->getResponse()->getStatusCode()
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment