2010-09-15 8 views
1

J'ai la classe de fabrique suivante qui a un client $ de dépendance. J'ai déplacé la dépendance à la classe de l'usine comme il s'est d'abord produit dans la classe Service_Service1 afin que je puisse tester la classe de service. Mais comment puis-je tester la classe d'usine?PHPUnit: Test d'une classe d'usine avec une dépendance

class Factory implements Service 
{ 

    public static function factory($service) 
    { 
     $config = Zend_Registry::get('config'); 

     switch ($service) { 
      case Service::Service1: 
       $client = new Zend_Soap_Client(
        $config->url, 
        array(
         'encoding' => 'UTF-8' 
        ) 
       ); 
       $pickupPoint = new Service_Service1($client); 
       break; 
     } 
    } 
} 

Répondre

4

Je ne suis pas sûr de ce que la question est, mais si elle est de savoir comment stub les dépendances hardcoded, jetez un oeil à cet article par l'auteur de PHPUnit:

Votre meilleur serait d'injecter des instances de ces classes au lieu de les coder en dur. Comme alternative vous pouvez faire leurs propriétés de noms de classe dans l'Usine, ainsi vous pouvez échanger ce qu'il va instancier.

+0

Je cherchais juste une solution pour changer la classe de fabrique pour qu'elle soit testable sans dépendances codées en dur, donc merci! – tom

+0

Y at-il une possibilité d'obtenir le php-test-helpers/php-test-helpers comme extension de Windows DLL php? J'ai essayé le 'php_uopz.dll' mais je ne peux pas obtenir' uopz_overload (ZEND_NEW, function() {}); 'fonctionner de toute façon. Aussi, je ne suis pas en mesure de trouver d'autres suggestions sur la façon de tester les usines unitaires :-( –

+1

@ PhilippGächter aucune idée.Je ne suis même pas sûr que les aides de test sont toujours pris en charge de nos jours. – Gordon