2017-06-14 175 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(...)