Я пытаюсь выполнить некоторые тесты базы данных с модулем php, но продолжаю получать следующие ошибки:
Мой composer.json выглядит так:
{
"require": {
"phpunit/phpunit": "4.8",
"phpunit/dbunit": "^2.0"}
Это страница, на которой я пытаюсь выполнить тест:
<?php
require_once 'autoload.php';
class testDatabase extends \PHPUnit_Extensions_Database_TestCase {public function getConnection() {
$db = new PDO(
"mysql:host=localhost;dbname=mrf",
"", "");
return $this->createDefaultDBConnection($db, "bulletproof");
}
}
?>
Я использую автозагрузчик sql для загрузки основных классов php, и это выглядит следующим образом:
<?php
spl_autoload_register(function($class) {
require_once '../classes/' . $class . '.php';
});
?>
На мой взгляд, странно то, что обычные тесты phpunit работают, а тест dbUnit — нет. Я попробовал несколько обновлений composer, phpUnit и dbUnit, загруженных с packagist, но безуспешно.
Было бы здорово, если бы вы могли мне помочь,
Заранее спасибо.
Когда ты бежишь composer install
композитор генерирует файл PROJECT_ROOT/vendor/autoload.php
, Этот файл содержит все необходимое для автозагрузки зависимостей вашего проекта, поэтому, основываясь на том, что я вижу на скриншоте, вам нужно require_once
это так же, как и ваше собственное.
Как примечание: у phpunit есть опция --bootstrap=filename
, который выполняется до запуска всех тестов. Вы можете запустить
phpunit --bootstrap=PROJECT_ROOT/vendor/autoload.php databaseTest.php
После этого вы можете создать что-то вроде phpunit_bootstrap.php, поместите require_once 'autoload.php';
здесь и композиторы vendor / autoload.php, чтобы вы могли запускать такие тесты, как
phpunit --bootstrap=path/to/your/phpunit_bootstrap.php AnythingYouWantToTest.php
без необходимости вставлять require_once 'autoload.php';
в каждом тестовом файле.
Других решений пока нет …