2016-05-13 7 views
4

OrdnerstrukturPHPUnit Klasse nicht

/app/lib/Helper.php

/tests/HelperTest.php

/vendor/autoload.php

Komponisten gefunden. json

{ 
    "require-dev": { 
     "phpunit/phpunit": "*" 
    }, 

    "autoload": { 
     "psr-4": { 
      "Datapark\\LPS\\": "app/" 
     } 
    }, 

    "autoload-dev": { 
     "psr-4": { 
      "Datapark\\LPS\\Tests\\": "tests/" 
      } 
    }, 
} 

helper.php

<?php 

namespace lib; 

class Helper 
{ 
    public function array_get($array, $key, $default = null) 
    { 
     // code 
    } 
} 

HelperTest.php

<?php 

use lib\Helper; 

class HelperTest extends \PHPUnit_Framework_TestCase 
{ 
    public function test_array_get() 
    { 
     $helper = new Helper(); 

    } 
} 

Befehl ausführen ich auf dem Server [Debian 8/PHP7]

phpunit --bootstrap vendor/autoload.php tests

Fehler I ge t

1) HelperTest::test_array_get

Error: Class 'lib\Helper' not found

lib \ Helper über Namensraum geladen und meine IDE (PhpStorm) auch sie erkennen. Ich kämpfe schon ein paar Stunden herum und bekomme es nicht zur Arbeit.

Antwort

5

Ihre Konfiguration automatisch geladen sagt:

 "Datapark\\LPS\\": "app/" 

Was bedeutet, so etwas wie:

classes in app directory have Datapark\LPS\ namespace prefix.

So als Beispiel Klasse in der Datei app/lib/Helper.php sollte Datapark\LPS\lib Namespace haben. Daher müssen Sie Namespace-Deklaration für Helper Klasse ändern:

namespace Datapark\LPS\lib; 

Und es gibt ähnliches Problem für Ihren Testordner.

+0

es funktioniert zu arbeiten, um meine Tests begonnen! Danke –

2

Ich habe bemerkt, dass, wenn ich laufen:

$ vendor/bin/phpunit tests 

dann