0

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

4

3 回答 3

2

我有一个类似的错误,我明确地设置了basePathin config/test.php

'components'=>array(
    ...
    'assetManager'=>array(
        'basePath'=>dirname(__FILE__).'/../../assets',
    )
)
于 2013-12-26T23:04:17.857 回答
1

我解决了问题

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

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

于 2013-09-16T01:25:29.937 回答
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 模式之间的差异。

于 2013-09-30T12:09:11.390 回答