J'utilise Symfony 3.3 et PHPUnit 5.7 et j'essaye de me moquer d'un service pour tester un contrôleur api.PhpUnit et Symfony: Mock Service ne fonctionne pas
Le contrôleur:
class ApiTestManager extends BaseApiController{
public function getAction(): View
{
$response = $this->get('app.business.test_api')->getResponse();
return $this->view($response);
}}
La classe de test:
class ApiTestManagerTest extends WebTestCase {
public function testApiCall()
{
$client = static::createClient();
$service = $this->getMockBuilder(ApiTestManager::class)
->disableOriginalConstructor()
->setMethods(['getResponse'])
->getMock()
->expects($this->any())
->method('getResponse')
->will($this->returnValue(new Response()));
$client->getContainer()->set('app.business.test_api', $service);
$client->request('GET', 'de/api/v1/getResponse');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
}}
J'ai passé des heures à essayer de trouver l'erreur, mais chaque fois que j'exécuter ce test, il me donne l'erreur suivante:
Quelqu'un peut-il me dire ce qui ne va pas avec mon code?Error: Call to undefined method PHPUnit_Framework_MockObject_Builder_InvocationMocker::getResponse()
Merci :)
Je suggère d'utiliser le nom de classe complet comme paramètre pour 'getMockBuilder()'. Et, avez-vous étendu la classe WebTestCase correcte, le 'Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase'? –
Malheureusement cela ne fait aucune différence ... oui c'est le WebTestCase correct :) – jennymo