我有运行测试的问题。我的模型使用扩展Yii邮件然后我运行测试它的失败与错误的断言路径。另一个测试最终运行(模型不使用任何扩展)。预加载只是日志。
答案 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模式之间的差异。