2011-05-09 64 views
5

任何人都可以提供一個使用TDD符號在Symfony2中開發的標準示例嗎?或者分享鏈接到TDD Symfony2開發的有趣材料(官方文檔除外:))?symfony2 tdd開發

P.S.是否有人爲MVC模式的控制器部分編寫單元測試?

回答

10

我剛剛做了silex,這是一個基於Symfony2的微型框架。據我所知,它非常相似。我會推薦它用於Symfony2世界的入門。

我也用TDD來創建此應用程序,所以我所做的就是:

  1. 我寫了我的第一次測試,以驗證路徑/動作
  2. 然後我實現我的引導路線
  3. 然後,我添加斷言我的測試例如,什麼應該顯示
  4. 我實現了,在我的代碼等等

的例如測試用例(在tests/ExampleTestCase.php)看起來是這樣的:

<?php 
use Silex\WebTestCase; 
use Symfony\Component\HttpFoundation\SessionStorage\ArraySessionStorage; 

class ExampleTestCase extends WebTestCase 
{ 
    /** 
    * Necessary to make our application testable. 
    * 
    * @return Silex\Application 
    */ 
    public function createApplication() 
    { 
     return require __DIR__ . '/../bootstrap.php'; 
    } 

    /** 
    * Override NativeSessionStorage 
    * 
    * @return void 
    */ 
    public function setUp() 
    { 
     parent::setUp(); 
     $this->app['session.storage'] = $this->app->share(function() { 
      return new ArraySessionStorage(); 
     }); 
    } 

    /** 
    * Test/(home) 
    * 
    * @return void 
    */ 
    public function testHome() 
    { 
     $client = $this->createClient(); 
     $crawler = $client->request('GET', '/'); 

     $this->assertTrue($client->getResponse()->isOk()); 
    } 
} 

bootstrap.php

<?php 
require_once __DIR__ . '/vendor/silex.phar'; 

$app = new Silex\Application(); 

// load session extensions 
$app->register(new Silex\Extension\SessionExtension()); 

$app->get('/home', function() use ($app) { 
    return "Hello World"; 
}); 
return $app; 

web/index.php

<?php 
$app = require './../bootstrap.php'; 
$app->run();