Yii CAssetManager.basePath在PHPUnit测试中无效

Yii CAssetManager.basePath在PHPUnit测试中无效,yii,phpunit,yii-extensions,Yii,Phpunit,Yii Extensions,我运行测试时遇到问题。我的模型使用扩展名Yii-mail,然后使用错误的断言路径运行测试。最后运行另一个测试(模型不使用任何扩展)。预加载只是日志。我解决了这个问题 public function setUp(){ Yii::app()->assetManager->basePath = '../../asserts'; } 我不知道为什么这个错误只出现在一个模型中…我解决了这个问题 public function setUp(){

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

我解决了这个问题

  public function setUp(){
        Yii::app()->assetManager->basePath = '../../asserts';
    }
我不知道为什么这个错误只出现在一个模型中…

我解决了这个问题

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

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

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

在我看来,这个问题是(间接地)由PHPUnit引起的,因为它只支持CLI测试模式,这使得一些东西确实比在HTTP请求模式下更难测试。因此,一些人编写了工具,通过标准的web GUI和整个本机HTTP环境(例如)来运行单元测试。最终,您可以使用诸如Selenium之类的HTTP客户端来运行测试,就像在页面上单击一样(请参阅)


然而,这是一个主观观点的问题——有人可能会说,CLI模式下的测试有优势,有些人会讨厌它。但事实是,我们必须记住HTTP和CLI模式之间的差异。

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

在我看来,这个问题是(间接地)由PHPUnit引起的,因为它只支持CLI测试模式,这使得一些东西确实比在HTTP请求模式下更难测试。因此,一些人编写了工具,通过标准的web GUI和整个本机HTTP环境(例如)来运行单元测试。最终,您可以使用诸如Selenium之类的HTTP客户端来运行测试,就像在页面上单击一样(请参阅)


然而,这是一个主观观点的问题——有人可能会说,CLI模式下的测试有优势,有些人会讨厌它。但事实是,我们必须记住HTTP和CLI模式之间的差异。

我有一个类似的错误,我在
config/test.php
中显式设置了
basePath

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

我有一个类似的错误,我在
config/test.php
中显式设置了
basePath

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