Je suis nouveau à la fois TDD et phpunit.test PHP_SAPI! = Code 'cli' avec phpunit
Je teste le code qui bifurque basée sur sa méthode d'exécution:
if (PHP_SAPI!='cli') {
header('HTTP/1.1 '.$statusCode);
}
Je veux obtenir autant de couverture de code possible, mais je ne peux pas sembler tester cette partie (parce que PHPUnit est le test via l'interface de ligne de commande).
Y a-t-il un moyen de contourner cela? Ou une autre façon de tester cette partie?
Je pensais essayer de boucler ou quelque chose, mais où les tests se dérouleront par rapport au système de l'utilisateur qui le teste.
Vous effectivement trouvé une odeur de code. Au lieu de cela, vous devriez avoir ceci comme un paramètre injecté pour ce code * ou * deux implémentations, une pour CLI et une pour HTTP afin que vous puissiez tester les deux unités. Si ce n'est pas votre code, vous n'avez pas besoin de le tester. – hakre
BTW, si vous voulez faire TDD (écrire le test avant d'écrire le code), vous ne rencontrerez pas ce problème en premier lieu. En guise de note supplémentaire et pour rendre le terme TDD un peu plus clair, je ne juge pas, il m'a fallu beaucoup de temps aussi jusqu'à ce que je comprenne l'avantage d'écrire des tests en premier. – hakre