2017-06-14 169 views
2

我正在運行一些使用PHPUnit的單元測試,並且在這些測試中破解了我的應用程序(沒有其他方式,舊的代碼庫)。代碼庫的某些部分使用在單元測試中動態設置Yii控制器

Yii::app()->getController()->createUrl(...); 

但是在這種情況下,沒有控制器,所以測試失敗。有沒有辦法在我的測試中動態添加虛擬控制器?類似於

Yii::app()->setController($dummyController); 

或者我是否必須發起某種假路由事件?

回答

2

您可以簡單地使用:

$ctrl = new CController('whatever you need for the id') 

和使用它的方法。小心,只能構建方法集id。你沒有提供太多的代碼,所以這是一個普遍的想法。看看createUrl()方法,並檢查它是否應該起作用。

我使用這種技術在控制檯環境下呈現頁面(並使用它們的內容)。

+0

謝謝,非常好! –

0

如果您需要多個測試的控制器,您可以在setUp方法中設置一次。

public function setUp() 
{ 
    parent::setUp(); 
    Yii::app()->controller = new CController('test'); 
} 

然後你就可以在你的測試使用它:

Yii::app()->controller->createUrl(...)