我已经为新的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测试从命令行运行正常。
答案 0 :(得分:1)
我已经解决了我的问题,但有两件事情导致了它,所以我想我会把它们放在这里,希望它能帮助别人。
我在这里遇到的主要问题与数据库权限有关。我运行测试的数据库用户只拥有相关Silverstripe站点的权限。测试要求用户能够为每个测试创建单独的数据库。授予足够的权限可以解决我的问题。
需要更改的另一件事是我的phpunit.xml
,当需要更改为mysite/tests
时,它仍然显示为app/tests
。