2010-06-24 6 views
0

J'utilise Zend_Test pour les tests unitaires dans Zend Framework. J'ai configuré l'environnement d'amorçage et de test correctement alors je suis arrivé cette sortie d'erreur de l'unité de testZend_Test: Échec du contrôleur d'assertion

Failed asserting last controller used <"error"> was "index" 

Cette erreur se produit quand je l'appelle ma classe DbTable à l'intérieur méthode d'action tels que

public function indexAction() 
{ 
    $roleDb = new Model_DbTable_Role; 
    $role = $roleDb->getAll(); 
    $this->_forward('login'); 
} 

Si je supprime deux rôle des lignes, les tests unitaires sont un succès. C'est mon code de test unitaire

public function testIndexActionShouldRedirectToLoginAction() 
{ 
    $this->dispatch('/index'); 
    $this->assertController('index'); 
    $this->assertAction('login'); 
} 

Quel est le problème avec ces lignes?

Comment savoir l'erreur réelle au lieu de simplement Échec de l'affirmation du dernier contrôleur utilisé < "erreur">? Merci

+0

essayer d'attraper l'exception à l'intérieur du test – opHASnoNAME

+0

Je suis encore débutant dans les tests unitaires et désireux de l'apprendre. Je vais essayer de savoir comment utiliser l'exception dans les tests unitaires. Je vous remercie. –

+0

@ bhoo-day, getAll() ou fetchAll()? – allnightgrocery

Répondre

0

Enfin, il a résolu. C'est à cause de PDO que pgsql n'a pas été détecté par l'unité php. Pour info, dans XAMPP il y a deux fichiers de php.ini.

Tout d'abord, à l'intérieur apache/bin et le second est à l'intérieur dossier php. XAMPP utilise toujours le premier php.ini pour le serveur apache mais l'unité php utilise le second. J'ai configuré le premier php.ini pour utiliser pgsql mais oubliez le second. C'est la raison pour laquelle mon application fonctionne toujours mais pas l'unité php.

Puis, j'activer l'extension de pgsql dans la deuxième php.ini

extension=php_pdo_mssql.dll 
extension=php_pdo_mysql.dll 
extension=php_pdo_pgsql.dll <= add it 
;extension=php_pdo_oci.dll 
;extension=php_pdo_oci8.dll 
;extension=php_pdo_odbc.dll 
extension=php_pdo_sqlite.dll 
;extension=php_perl.dll 
extension=php_pgsql.dll <= remove ';' 

dernier, je vous remercie pour vos commentaires ou suggestions pour ce problème. Que Dieu vous bénisse tous. :)

Questions connexes