Question

Existe-t-il un moyen de tester le code procédural? J'ai regardé Phpunit, ce qui semble être un excellent moyen de créer des tests automatisés. Cependant, il semble être orienté vers le code orienté objet, y a-t-il des alternatives pour le code procédural?

Ou dois-je convertir le site Web en orienté objet avant d'essayer de tester le site Web? Cela peut prendre un certain temps, ce qui est un peu un problème car je n'ai pas beaucoup de temps à perdre.

Merci,

Daniel.

Était-ce utile?

La solution

Vous pouvez tester le code procédural avec PHPUnit. Les tests unitaires ne sont pas liés à la programmation orientée objet. Ils testent des unités de code. Dans OO, une unité de code est une méthode. Dans PHP procédural, je suppose que c'est un script entier (fichier).

Bien que le code OO soit plus facile à entretenir et à tester, cela ne signifie pas que la procédure PHP ne peut pas être testée.

Par exemple, vous avez ce script:

simple_add.php

$arg1 = $_GET['arg1'];
$arg2 = $_GET['arg2'];
$return = (int)$arg1 + (int)$arg2;
echo $return;

Vous pouvez le tester comme ceci:

class testSimple_add extends PHPUnit_Framework_TestCase {

    private function _execute(array $params = array()) {
        $_GET = $params;
        ob_start();
        include 'simple_add.php';
        return ob_get_clean();
    }

    public function testSomething() {
        $args = array('arg1'=>30, 'arg2'=>12);
        $this->assertEquals(42, $this->_execute($args)); // passes

        $args = array('arg1'=>-30, 'arg2'=>40);
        $this->assertEquals(10, $this->_execute($args)); // passes

        $args = array('arg1'=>-30);
        $this->assertEquals(10, $this->_execute($args)); // fails
    }

}

Pour cet exemple, j'ai déclaré un _execute Méthode qui accepte un tableau de paramètres Get, capturez la sortie et renvoyez-le, au lieu d'inclure et de capturer encore et encore. Je compare ensuite la sortie en utilisant les méthodes d'assurance régulières de PHPUnit.

Bien sûr, la troisième affirmation échouera (dépend de l'erreur_réportant cependant), car le script testé donnera un index indéfini Erreur.

Bien sûr, lors des tests, vous devez mettre Error_Reporting à E_ALL | E_STRICT.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top