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
Je pense que je n'avais pas bien décrit mon problème, j'ai mis à jour la question. –