2015-03-26 1 views
2

J'essaie d'obtenir des routes générées dans mes tests fonctionnels. Je veux qu'ils soient générés dynamiquement, de préférence par leur nom, mais je ne peux pas trouver un moyen approprié de le faire. Dites-moi s'il vous plaît.Symfony2 UrlGenerator dans les tests

Un simple test:

public function testIndex() 
    { 
     // I have service container 
     $container = $this->client->getContainer(); 
     $crawler = $client->request('GET', helper_function("route_name", $params)); 
     $heading = $crawler->filter('h1')->eq(0)->text(); 
     $this->assertEquals('Application list', $heading); 
    } 

Qu'est-ce que helper_function() devrait être?

Répondre

3

Puisque vous avez accès au conteneur de service, vous pouvez obtenir router (qui retournera par défaut le service Symfony\Component\Routing) et appeler la méthode generate dessus.

$route = $container->get('router')->generate($routeName, $params); 
3

Dans la configuration de la classe WebTestCase, vous pouvez prendre une instance du composant du routeur, puis l'utiliser comme d'habitude.

Comme exemple:

class AcmeDemoTestCase extends WebTestCase 


    protected $router; 


     protected function setUp() 
    { 
     ........ 
     $this->client = static::createClient(); 
     $this->router = $this->client->getContainer()->get('router'); 
     ..... 
    } 


     public function testIndex() 
     { 
     $crawler = $this->client->request('GET', $this->router->generate($routeName, $params);); 

     } 

Hope this aide