2010-10-11 7 views
0

J'ai un script PHP qui s'exécute en ligne de commande, en exécutant des classes qui sont déjà testées avec PHPUnit.ligne de commande de test d'intégration PHP

Cependant, je voudrais vérifier que le script lui-même n'a pas d'erreurs logiques et fonctionne correctement.

// require classes 
require_once 'injectedClass.php'; 
require_once 'DBClass.php'; 
require_once 'taskEngine.php'; 

$injectedObj = new injectedClass; 
$dbObj = new DBClass; 

$taskRunner = new taskEngine($injectedObj, $dbObj); 

$taskRunner->task1()->task2(); 

$taskRunner->finish(); 

//etc 

Mise à jour Solution

Il est aussi simple que la réponse de djechelon suggéré, j'étais Overthinking il. La solution consiste à créer un test PHPUnit et à pré-affecter les variables passées dans le taskRunner pour simuler des objets. Dans le script en direct, une simple vérification avant de créer des objets réels permet le même script à utiliser pour les tests et la production:

test:

$injectedObj = $this->getMock('injectedClass'); 
$dbObj = $this->getMock('DBClass'); 

require_once '/path/to/live/script.php'; 

$this->assertTrue($taskRunner->finished); 
scénario

:

// require classes 

if(!isset($injectedObj)) { 
    $injectedObj = new injectedClass; 
} 
if(!isset($dbObj)) { 
    $dbObj = new DBClass; 
} 

$taskRunner = new taskEngine($injectedObj, $dbObj); 

// run tasks 

Répondre

1

ne peut pas vous créer un test PHPUnit pour votre script?

Vous pouvez exécuter manuellement un test d'intégration , en créant un script qui exécute votre script avec un ensemble de paramètres d'entrée donnés et comparez sa sortie à ce à quoi vous pourriez vous attendre.

Méfiez-vous du problème de la poule et de l'œuf: votre script de test ne peut pas être testé lui-même par un banc d'essai ...

Quoi qu'il en soit, je ne suis pas sûr que vous avez besoin de tester votre script s'il est si simple. Quelques passages manuels pourraient suffire ...

+0

Je pense que je n'avais pas bien décrit mon problème, j'ai mis à jour la question. –