2013-01-08 19 views
1

基於教程這裏: How to Dynamically Generate Forms Using Form Events單元測試Symfony的2形式事件訂閱

我已經創建了一個使用事件訂戶的形式:

class PageType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('name', 'text'); 

     $blockSubscriber = new AddBlocksSubscriber($builder->getFormFactory()); 
     $builder->addEventSubscriber($blockSubscriber); 
    } 

    // ... 
} 

到目前爲止好......直到我決定寫一些單元測試。 ;)使用'new'關鍵字是有問題的,因爲它阻止我使用模擬訂戶對象。

我能想到的兩種可能的解決方案: 似乎有點麻煩,但並需要一個PHP擴展:描述here

  1. 使用測試傭工/班冒充。它不'覺得'必須這樣做,但可能是一個實際的解決方法。

  2. 使用依賴注入,例如,使PageType表單構造函數需要塊訂戶的實例。 我在這裏找到的問題是,要在表單外創建一個訂閱者對象,我還需要一個表單構建器的實例。由於表格通常是通過在控制器中調用createForm()來構建的,所以我通常不會從表單外部看到構建器。

或者,它真的有必要單元測試表單,或者是使用爬蟲的最終輸出的功能測試是否足夠?

對於那些實施了幾個Symfony2表單的人,我很想知道你是如何接近它的。

回答