PHPUnit中的原始PHP测试响应

时间:2011-08-17 18:56:54

标签: php eclipse zend-framework phpunit phing

我已经设法使用Phing在我的Zend Framework项目中安装PHPUnit,以便在构建时通过Eclipse外部工具执行测试。我的测试是在构建时找到并执行的,但由于某种原因,页面中的PHP没有被解释。

为了弄清楚我的断言失败的原因,我在测试中添加了echo $this->response->outputBody();并意识到它正在回应原始PHP。如果我添加echo get_class($this->response);,我会得到Zend_Controller_Response_HttpTestCase作为类名,我收集的是正确的。

我在Apache遇到过这个问题,文件处理程序没有设置为通过PHP可执行文件发送PHP代码,但据我所知,这不应该是一个问题,因为Phing / PHPUnit应该处理执行一切通过可执行文件直接。我还不太了解PHPUnit或Phing如何知道我可能做错了什么。有什么建议吗?

这是我的测试类:

<?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 */
    }


}

当我运行其中一个测试时,这是我的控制台输出:

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

1 个答案:

答案 0 :(得分:1)

您正在执行POST请求 - 如果您的网络服务器运行正常,它将永远不会提供原始PHP代码。检查/search/results脚本以查看它是否实际执行。由于您正在获取PHP代码,因此很可能它不被视为/被视为PHP脚本,而且其内容正在以纯文本形式提供。