2010-10-20 15 views
1

Je suis toujours un newb à phpunit alors j'espère être en train de l'expliquer correctement. J'essaye d'exécuter un test de contrôleur avec PHPUnit, cependant le plugin qui utilise Zend_Auth redirige vers le login. Comment créer les données de raccord? J'ai essayé de le placer dans mon setUp mais Zend_Auth semble être réinstancié après setUp. Merci pour toute aideComment stub données pour PHPUnit avec plugin en utilisant Zend_Auth qui redirige sur l'authentification échouée

Répondre

1

Vous avez juste à vous authentifier dans votre testcase manuellement. Dites, si vous avez un My_Auth_Adapter de classe personnalisée qui implémente Zend_Auth_Adapter_Interface, vous pouvez faire quelque chose comme ceci:

// authentication - you can place it in setUp() method if you want 
$adapter = new My_Auth_Adapter('someusername', 'somepassword'); 
Zend_Auth::getInstance()->authenticate($adapter); 

// checking if it's successful 
$this->assertTrue(Zend_Auth::getInstance()->hasIdentity()); 

// testing your controller code 
$this->dispatch('/some/url'); 
$this->assertController('some'); 
$this->assertAction('url'); 
$this->assertXpath(/*some element on your page*/); 
// and so on 
1

J'aime comment Wallgate utilisé un adaptateur personnalisé préremplir la connexion. Je vais essayer ça plus tard. En ce moment, je l'utilise.

// login as a valid user 
    $this->request 
     ->setMethod('POST') 
     ->setPost(array(
      'username' => 'foobar', 
      'password' => 'foobar' 
     )); 
    $this->dispatch('/user/login'); 

    // to make another request, we need to reset both request and response 
    $this->resetRequest(); 
    $this->resetResponse(); 
    $this->dispatch('user/contactdetail'); 

La dernière ligne génère une page de connexion réussie.