2016-11-07 18 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> 

例外がnixの端子を介して、phpunitまたは​​を実行することによってスローされます。 phpunit/usr/bin/phpunitにあり、debパッケージを介して割り当てられます。

+0

何を見ていますか?そして、どこから正確にそれを実行しますか?また、 'phpunit.xml'ファイルはどのように見えますか? – ndm

+0

@ndm私は最初の質問を理解しませんでした。ファイルphpunit.xml.distは[こちら](https://github.com/mirko-pagliai/cakephp-mysql-backup/blob/master/phpunit.xml.dist) –

+0

あなたの質問にコードを追加してくださいそれは将来の読者のために自己完結型です。私の最初の質問で、私はあなたがphpunitを実行するために使用するCLIコマンドと、ファイルシステムのどこから、どの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*接続にマッピングします(defaulttestなど)。コマンドを使用すると、PHPUnitのを実行するために使用することとまったく同じように

も参照してください

+0

はい、これは動作します。もう一つは、あなたの器具にロード可能であることを確認してください。私の場合、私はコアからフィクスチャを使用しています。だから、私の '作曲家で。json': '' Cake \\ Test \\ ":" vendor/cakephp/cakephp/tests "' –

関連する問題