2017-02-02 1 views
1

J'ai été affecté à un ancien projet et je fais actuellement les tests. J'ai une erreur sur un certain bloc de code qui enregistre les données pour exceller. Cependant, la méthode sort un en-tête, et ainsi le phpunit dit "Impossible de modifier les informations d'en-tête".Pouvez-vous "ignorer" un bloc de code dans phpunit?

Existe-t-il un moyen de dire à phpunit de ne pas exécuter cette méthode?

$ codeCoverageIgnore ne résout pas le problème car c'est seulement aux données de codecoverage. Je ne peux pas trouver quelque chose qui dit à phpunit, "n'exécutez pas celui-ci".

header('Content-Type: application/vnd.ms-excel;charset=utf-8'); 
    header('Content-type: application/x-msexcel;charset=utf-8'); 
    header('Content-Disposition: attachment;filename="' . $this->sFileName . '"'); 
    header('Cache-Control: max-age=0'); 

Et voici l'erreur que je reçois de PHPUnit

Impossible de modifier les informations d'en-tête - têtes déjà envoyés par (sortie commencé à D: \ xampp7 \ php \ pear \ PHPUnit \ Util \ Printer.php: 172)

+0

Salut et bienvenue à SO. S'il vous plaît ajouter du code et/ou des choses que vous avez essayé afin que nous puissions vous aider à mieux. Veuillez lire [ask] et [mcve] pour demander des questions mieux reçues. – davejal

+0

$ this-> warningOff(); ou stderr = "true" dans votre phpunit.xml – mwweb

Répondre

0

Il y aurait deux façons de contourner ceci - refactoriser le code pour que les en-têtes soient sortis dans une fonction que vous pouvez remplacer - pour ne pas fonctionner du tout, OU utiliser output buffering pour capturer les en-têtes (et toute autre sortie) au lieu de les envoyer. Il y a un avantage à utiliser le style de mise en mémoire tampon, car la sortie peut être récupérée et vérifiée, puis supprimée (ob_get_clean ou ob_get_contents & ob_clean).