如何在Symfony2中测试响应头?

时间:2012-06-16 14:35:38

标签: php unit-testing symfony phpunit

我写了一个响应监听器来绕过一些特定的内容类型,我想知道UnitTest的最佳方法是什么。

你对我如何做到这一点有什么线索吗?

我是否需要创建Controller fixture来测试?

单元测试套件内是否允许进行功能测试?

3 个答案:

答案 0 :(得分:1)

为听众编写单元测试非常简单。您只需要模拟侦听器所依赖的对象。在Symfony源代码中查找示例测试。

另一种方法可能是撰写functional test

答案 1 :(得分:1)

从文档中,这是一个单元测试:

// src/Acme/DemoBundle/Tests/Utility/CalculatorTest.php
namespace Acme\DemoBundle\Tests\Utility;

use Acme\DemoBundle\Utility\Calculator;

    class CalculatorTest extends \PHPUnit_Framework_TestCase
    {
        public function testAdd()
        {
            $calc = new Calculator();
            $result = $calc->add(30, 12);

            // assert that your calculator added the numbers correctly!
            $this->assertEquals(42, $result);
        }
    }

这是一个功能测试:

// src/Acme/DemoBundle/Tests/Controller/DemoControllerTest.php
namespace Acme\DemoBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class DemoControllerTest extends WebTestCase
{
    public function testIndex()
    {
        $client = static::createClient();

        $crawler = $client->request('GET', '/demo/hello/Fabien');

        $this->assertGreaterThan(
            0,
            $crawler->filter('html:contains("Hello Fabien")')->count()
        );
    }
}

请记住,功能测试无法测试Ajax等,因此最好使用功能性浏览器测试框架测试繁重的Ajax站点。

祝你好运

答案 2 :(得分:0)

你可以使用它。

            $logger = $this->client->getContainer()->get('logger');
            $logger->info("data->" . $response->headers->get("Location"));