【问题标题】:Yii CAssetManager.basePath is invalid on PHPUnit testYii CAssetManager.basePath 在 PHPUnit 测试中无效
【发布时间】:2013-09-19 10:57:43
【问题描述】:

我在运行测试时遇到问题。我的模型使用扩展 Yii 邮件,然后我用错误的断言路径运行测试它的失败。另一个测试最终运行(模型不使用任何扩展)。预加载只是日志。

【问题讨论】:

    标签: yii phpunit yii-extensions


    【解决方案1】:

    我遇到了类似的错误,我在config/test.php 中明确设置了basePath

    'components'=>array(
        ...
        'assetManager'=>array(
            'basePath'=>dirname(__FILE__).'/../../assets',
        )
    )
    

    【讨论】:

      【解决方案2】:

      我解决了问题

        public function setUp(){
              Yii::app()->assetManager->basePath = '../../asserts';
          }
      

      我不知道为什么这个错误只在一个模型中抛出......

      【讨论】:

        【解决方案3】:

        PhpUnit 在 CLI 模式下主要运行,因此缺少一些环境变量。 Yii 的 AssetManager 使用其中一个变量来确定 webroot,由于该变量不存在,它会在第一次尝试时抛出错误或设置无效的资产路径。

        在我看来,这个问题(间接)是由 PHPUnit 引起的,因为它只支持 CLI 测试模式,这使得一些东西比 HTTP 请求模式更难测试。因此,有些人编写了工具来通过具有整个原生 HTTP 环境的标准 Web GUI 运行单元测试(例如https://github.com/NSinopoli/VisualPHPUnit)。最终,您可以使用像 Selenium 这样的 HTTP 客户端来运行您的测试,就像点击页面一样(参见 http://phpunit.de/manual/3.7/en/selenium.html)。

        尽管如此,这是一个主观意见问题 - 有人可能会争辩说,在 CLI 模式下进行测试有优势,但有些人会讨厌它。但事实是,必须牢记 HTTP 和 CLI 模式之间的差异。

        【讨论】:

          猜你喜欢
          • 2011-12-16
          • 2014-05-26
          • 1970-01-01
          • 2012-03-22
          • 2015-12-05
          • 2014-06-09
          • 2012-04-01
          • 2012-09-12
          • 2013-02-02
          相关资源
          最近更新 更多