Raw PHP dans PHPUnit test response

J'ai réussi à configurer PHPUnit avec mon projet Zend Framework en utilisant Phing pour exécuter les tests au moment de la construction via un outil externe Eclipse. Mes tests sont trouvés et exécutés au moment de la construction, mais pour une raison quelconque, le PHP dans les pages n'est pas interprété.

Dans un effort pour comprendre pourquoi mes affirmations échouaient, j'ai ajouté: echo $this->response->outputBody(); à mon test et a réalisé qu'il faisait écho à la PHP brute. Si j'ajoute echo get_class($this->response); Je reçois Zend_Controller_Response_HttpTestCase comme nom de class, qui, d'après ce que je comprends, est correct.

J'ai eu ce problème avec Apache, où les gestionnaires de files n'étaient pas configurés pour envoyer le code PHP via l'exécutable PHP, mais pour autant que je sache, cela ne devrait pas être un problème car Phing / PHPUnit devrait gérer l'exécution de tout via l'exécutable directement. Je ne sais pas encore assez sur la façon dont PHPUnit ou Phing travaille pour savoir ce que je pourrais faire mal. Aucune suggestion?

Voici ma class de test:

 <?php class SearchControllerTest extends ControllerTestCase { public function setUp() { parent::setUp(); } public function testSearchPizzaChicago() { $this->_search('restaurants', 'chicago, il'); } private function _search($what, $where) { $this->request->setMethod('POST'); $this->request->setPost( array( 'search_what' => $what, 'search_where' => $where, ) ); $this->dispatch(Zend_Registry::get('base_url') . '/search/results'); echo $this->response->outputBody(); //echo get_class($this->response); $this->assertQuery('#results'); } public function tearDown() { /* Tear Down Routine */ } } 

Voici ma sortie de console lorsque je cours l'un des tests:

 Buildfile: C:\workspace\myproject\build.xml myproject > test: ... raw PHP code here ... [phpunit] Testsuite: SearchControllerTest [phpunit] Tests run: 1, Failures: 1, Errors: 0, Incomplete: 0, Skipped: 0, Time elapsed: 0.25874 s [phpunit] testSearchPizzaChicago FAILED [phpunit] Failed asserting node DENOTED BY #results EXISTS [phpunit] C:\workspace\frameworks\ZendFramework-1.11\library\Zend\Test\PHPUnit\Constraint\DomQuery.php:263 [phpunit] C:\workspace\frameworks\ZendFramework-1.11\library\Zend\Test\PHPUnit\ControllerTestCase.php:300 [phpunit] C:\workspace\myproject\tests\application\controllers\SearchControllerTest.php:34 [phpunit] C:\workspace\myproject\tests\application\controllers\SearchControllerTest.php:13 [phpunit] C:\wamp\bin\php\php5.3.5\PEAR\phing.php:37 BUILD FINISHED Total time: 2.0895 seconds 

Vous effectuez une request POST – si votre server Web fonctionne correctement, il NE SERAIENT JAMAIS un code PHP brut. Vérifiez que /search/results script pour voir s'il est effectivement exécuté. Étant donné que vous obtenez le code php, il est probable que cela ne soit PAS vu / traité comme un script php et son contenu est en cours de publication en tant que text clair.