Yii CAssetManager.basePath在PHPUnit测试中无效

时间:2013-09-15 03:17:21

标签: yii phpunit yii-extensions

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我解决了问题

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

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

答案 2 :(得分:0)

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

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

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