【问题标题】:Set Yii controller dynamically in unit-test在单元测试中动态设置 Yii 控制器
【发布时间】:2017-06-14 14:18:54
【问题描述】:

我正在使用 PHPUnit 运行一些单元测试,并且在这些测试中很难破解我的应用程序(别无他法,旧代码库)。部分代码库使用

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

但在这种情况下,没有控制器,因此测试失败。有没有办法在我的测试中动态添加一个虚拟控制器?类似的东西

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

还是我必须发起某种虚假的路由事件?

【问题讨论】:

    标签: php unit-testing yii regression-testing yii1.x


    【解决方案1】:

    你可以简单地使用:

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

    并使用它的方法。请注意,仅构造方法集id。您没有提供太多代码,所以这是一个一般性的想法。查看createUrl() 方法内部并检查它是否应该工作。

    我使用这种技术在控制台环境下渲染页面(并使用它们的内容)。

    【讨论】:

      【解决方案2】:

      如果您需要一个控制器进行多个测试,您可以在setUp 方法中设置一次。

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

      然后你可以在你的测试中使用它:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-09
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多