我正在運行一些使用PHPUnit的單元測試,並且在這些測試中破解了我的應用程序(沒有其他方式,舊的代碼庫)。代碼庫的某些部分使用在單元測試中動態設置Yii控制器
Yii::app()->getController()->createUrl(...);
但是在這種情況下,沒有控制器,所以測試失敗。有沒有辦法在我的測試中動態添加虛擬控制器?類似於
Yii::app()->setController($dummyController);
或者我是否必須發起某種假路由事件?
我正在運行一些使用PHPUnit的單元測試,並且在這些測試中破解了我的應用程序(沒有其他方式,舊的代碼庫)。代碼庫的某些部分使用在單元測試中動態設置Yii控制器
Yii::app()->getController()->createUrl(...);
但是在這種情況下,沒有控制器,所以測試失敗。有沒有辦法在我的測試中動態添加虛擬控制器?類似於
Yii::app()->setController($dummyController);
或者我是否必須發起某種假路由事件?
您可以簡單地使用:
$ctrl = new CController('whatever you need for the id')
和使用它的方法。小心,只能構建方法集id
。你沒有提供太多的代碼,所以這是一個普遍的想法。看看createUrl()
方法,並檢查它是否應該起作用。
我使用這種技術在控制檯環境下呈現頁面(並使用它們的內容)。
如果您需要多個測試的控制器,您可以在setUp
方法中設置一次。
public function setUp()
{
parent::setUp();
Yii::app()->controller = new CController('test');
}
然後你就可以在你的測試使用它:
Yii::app()->controller->createUrl(...)
謝謝,非常好! –