2016-11-07 3 views
0

Я пишу тесты с приборами, как описано here.Почему при запуске тестов отсутствует соединение с источником данных по умолчанию?

Мой самозагрузки для испытаний:

if (!getenv('db_dsn')) { 
    putenv('db_dsn=sqlite:///:memory:'); 
} 

ConnectionManager::config('test', ['url' => getenv('db_dsn')]); 
ConnectionManager::config('test_custom_i18n_datasource', ['url' => getenv('db_dsn')]); 

Мой код:

use Cake\TestSuite\TestCase; 

class BackupExportTest extends TestCase 
{ 
    public $fixtures = ['core.articles', 'core.comments']; 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->Articles = \Cake\ORM\TableRegistry::get('Articles'); 
    } 

    public function testMyFunction() 
    { 
     $query = $this->Articles->find('all'); 
    } 
} 

Теперь, выполнив тест, это исключение:

PHPUnit 5.4.6 by Sebastian Bergmann and contributors. 

E                 1/1 (100%) 

Time: 62 ms, Memory: 4.00MB 

There was 1 error: 

1) MysqlBackup\Test\TestCase\Utility\BackupExportTest::testMyFunction 
Cake\Datasource\Exception\MissingDatasourceConfigException: The datasource configuration "default" was not found. 

/home/mirko/Libs/Plugins/cakephp-mysql-backup/vendor/cakephp/cakephp/src/Datasource/ConnectionManager.php:196 
/home/mirko/Libs/Plugins/cakephp-mysql-backup/vendor/cakephp/cakephp/src/ORM/Locator/TableLocator.php:175 
/home/mirko/Libs/Plugins/cakephp-mysql-backup/vendor/cakephp/cakephp/src/ORM/TableRegistry.php:110 
/home/mirko/Libs/Plugins/cakephp-mysql-backup/tests/TestCase/Utility/BackupExportTest.php:38 

ERRORS! 
Tests: 1, Assertions: 0, Errors: 1. 

Таким образом, кажется, \Cake\ORM\TableRegistry::get() поисковые запросы для default подключение. Зачем? Как решить?


EDIT

phpunit.xml.dist здесь:

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit 
    colors="true" 
    processIsolation="false" 
    stopOnFailure="false" 
    syntaxCheck="false" 
    bootstrap="./tests/bootstrap.php" 
    > 

    <testsuites> 
     <testsuite name="cakephp-mysql-backup Test Cases"> 
      <directory>./tests/TestCase</directory> 
     </testsuite> 
    </testsuites> 

    <!-- configure code coverage --> 
    <filter> 
     <whitelist> 
      <directory suffix=".php">./src/</directory> 
     </whitelist> 
    </filter> 
</phpunit> 

Исключение брошено, запустив phpunit или phpunit tests/TestCase/Utility/BackupExportTest.php через Никс терминал. phpunit находится на /usr/bin/phpunit и отправлен через пакет deb.

+0

Что именно делает команду выглядеть, что вы используете для запуска PHPUnit? И откуда именно вы его запускаете? Также как выглядит ваш файл 'phpunit.xml'? – ndm

+0

@ndm Я не понял ваш первый вопрос. Файл phpunit.xml.dist [здесь] (https://github.com/mirko-pagliai/cakephp-mysql-backup/blob/master/phpunit.xml.dist) –

+0

Пожалуйста, добавьте код на свой вопрос, чтобы он является самодостаточным для будущих читателей. С моим первым вопросом я просил команду CLI, которую вы используете для запуска phpunit, и откуда в файловой системе и через какой CLI (nix-терминал, Windows по умолчанию CLI, windows powershell и т. Д.) Вы запускаете Это. – ndm

ответ

1

Обычно вам требуется PHPUnit в качестве зависимости и запускать его через vendor/bin/phpunit, однако фактическая проблема, скорее всего, заключается в том, что вы не настроили прослушиватель арматуры.

Цитата из документации:

Перед тем, как можно использовать светильники вы должны дважды проверить, что ваш phpunit.xml содержит арматуру слушатель:

<!-- Setup a listener for fixtures --> 
<listeners> 
     <listener 
     class="\Cake\TestSuite\Fixture\FixtureInjector" 
     file="./vendor/cakephp/cakephp/src/TestSuite/Fixture/FixtureInjector.php"> 
       <arguments> 
         <object class="\Cake\TestSuite\Fixture\FixtureManager" /> 
       </arguments> 
     </listener> 
</listeners> 

Менеджер арматуры несет ответственность за создание надлежащего алиасы соединений, то есть сопоставление запросов не-тестового соединения к соединениям test*, например default - test.

Смотрите также

+0

Да, это работает. Другое дело: убедитесь, что ваши светильники загружаются. В моем случае я использую светильники из ядра. Итак, в моем «композиторе».json': '" Cake \\ Test \\ ":" vendor/cakephp/cakephp/tests "' –

 Смежные вопросы

  • Нет связанных вопросов^_^