【发布时间】:2013-09-19 10:57:43
【问题描述】:
我在运行测试时遇到问题。我的模型使用扩展 Yii 邮件,然后我用错误的断言路径运行测试它的失败。另一个测试最终运行(模型不使用任何扩展)。预加载只是日志。
【问题讨论】:
标签: yii phpunit yii-extensions
我在运行测试时遇到问题。我的模型使用扩展 Yii 邮件,然后我用错误的断言路径运行测试它的失败。另一个测试最终运行(模型不使用任何扩展)。预加载只是日志。
【问题讨论】:
标签: yii phpunit yii-extensions
我遇到了类似的错误,我在config/test.php 中明确设置了basePath。
'components'=>array(
...
'assetManager'=>array(
'basePath'=>dirname(__FILE__).'/../../assets',
)
)
【讨论】:
我解决了问题
public function setUp(){
Yii::app()->assetManager->basePath = '../../asserts';
}
我不知道为什么这个错误只在一个模型中抛出......
【讨论】:
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 模式之间的差异。
【讨论】: