2012-06-16 80 views
2

我寫了一個響應監聽器來繞過一些特定的內容類型,我想知道什麼是UnitTest的最佳方式。如何測試Symfony2中的響應頭?

你有什麼線索可以做到嗎?

我需要創建控制器夾具來測試嗎?

在單元測試套件中是否允許進行函數測試?

+0

對於任何未來看到這個問題的人,我有一個類似的問題 - 如何測試內容類型。我在斷言中使用了:$ client-> getResponse() - > headers-> get('content_type')'。 – b85411

回答

1

爲聽衆編寫單元測試相當簡單。你只需要模擬聽衆依賴的對象。在Symfony源代碼中查找示例測試。

另一種方法可能是編寫functional test

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網站將最好使用功能性瀏覽器測試框架進行測試。

好運

0

您可以使用此。

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