Я изучаю SilverStripe и в то же время пытаюсь интегрировать модульное тестирование в свой простой проект. Я пытаюсь использовать $ fixture_file для заполнения данных. Но это не работает.
Это мой phpunit.xml
<phpunit bootstrap="vendor/silverstripe/framework/tests/bootstrap.php" colors="true">
<testsuite name="Default">
<directory>app/tests</directory>
</testsuite>
<groups>
<exclude>
<group>sanitychecks</group>
</exclude>
</groups>
</phpunit>
Это мой PageTest.php
use SilverStripe\Dev\SapphireTest;
class PageTest extends SapphireTest
{
static $fixture_file = 'fixtures.yml';
public function testMyMethod()
{
$this->assertEquals(2, Page::MyMethod());
}
}
Это мое крепление.yml
ContactFormSubmission:
wai:
Name: Wai
Email: iljimae.ic@gmail.com
Message: ThisIsAMessage
Это мой ContactFormSubmission.php
<?php
namespace {
use SilverStripe\ORM\DataObject;
class ContactFormSubmission extends DataObject
{
private static $db = [
'Name' => 'Varchar',
'Email' => 'Varchar',
'Message' => 'Text',
];
}
}
Когда я запускаю тест, я получаю эту ошибку.
Time: 1.06 seconds, Memory: 16.00MB
There was 1 error:
1) PageTest::testMyMethod
SilverStripe\ORM\Connect\DatabaseException: Couldn't run query:
CREATE DATABASE "ss_tmpdb_1558273911_5783864" DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci
42000-1044: Access denied for user 'wai'@'%' to database 'ss_tmpdb_1558273911_5783864'
/var/www/vendor/silverstripe/framework/src/ORM/Connect/DBConnector.php:64
/var/www/vendor/silverstripe/framework/src/ORM/Connect/PDOConnector.php:398
/var/www/vendor/silverstripe/framework/src/ORM/Connect/PDOConnector.php:287
/var/www/vendor/silverstripe/framework/src/ORM/Connect/Database.php:143
/var/www/vendor/silverstripe/framework/src/ORM/Connect/Database.php:228
/var/www/vendor/silverstripe/framework/src/ORM/Connect/Database.php:144
/var/www/vendor/silverstripe/framework/src/ORM/Connect/MySQLDatabase.php:381
/var/www/vendor/silverstripe/framework/src/ORM/Connect/DBSchemaManager.php:120
/var/www/vendor/silverstripe/framework/src/ORM/Connect/MySQLSchemaManager.php:231
/var/www/vendor/silverstripe/framework/src/ORM/Connect/Database.php:830
/var/www/vendor/silverstripe/framework/src/ORM/Connect/TempDatabase.php:190
/var/www/vendor/silverstripe/framework/src/Dev/State/FixtureTestState.php:44
/var/www/vendor/silverstripe/framework/src/Dev/State/SapphireTestState.php:68
/var/www/vendor/silverstripe/framework/src/Dev/SapphireTest.php:274
/var/www/vendor/phpunit/phpunit/phpunit:52
Я обнаружил, что он не может подключиться к базе данных. Я пытаюсь переопределить конфигурацию базы данных в phpunit.xml следующим образом.
<env name="SS_DATABASE_NAME" value="test"/>
Но он все еще пытается подключиться к временной базе данных. Как определить базу данных для модульного тестирования в Silverstripe?