无法通过Silverstripe测试来显示结果

时间:2013-09-06 15:21:45

标签: php phpunit silverstripe

我已经为新的Silverstripe项目添加了一些测试,它们位于app/tests/app是我已重命名的mysite_config.php也是它是$project变量。

我有两个文件:

APHPUnitTest.php

class APHPUnitTest extends SapphireTest {

    static $fixture_file = 'APHPUnitTest.yml';

    public function testURLGeneration() {

        $expectedURLs = array(
            'home' => 'home',
            'about' => 'about-us'
        );

        foreach($expectedURLs as $fixture => $urlSegment) {
            $obj = $this->objFromFixture('Page', $fixture);
            $this->assertEquals($urlSegment, $obj->URLSegment);
        }
    }
}

APHPUnitTest.yml

Page:
    home:
        Title: Home
    about:
        Title: About Us

测试显示在/dev/tests上,但是当我运行它时,我只看到标题:

APHPUnitTest
dev → tests → APHPUnitTest

并且没有结果......我可以将die;添加到我的测试.php,这些会阻止页面加载,因此文件执行正常,我不确定为什么这不是'工作。

当我尝试从命令行运行测试时,我收到错误class SapphireTest not found。非silverstripe PHPUnit测试从命令行运行正常。

1 个答案:

答案 0 :(得分:1)

我已经解决了我的问题,但有两件事情导致了它,所以我想我会把它们放在这里,希望它能帮助别人。

我在这里遇到的主要问题与数据库权限有关。我运行测试的数据库用户只拥有相关Silverstripe站点的权限。测试要求用户能够为每个测试创建单独的数据库。授予足够的权限可以解决我的问题。

需要更改的另一件事是我的phpunit.xml,当需要更改为mysite/tests时,它仍然显示为app/tests