2016-05-13 5 views
0

Eigentlich arbeitet an einem Bootstrap 3 Plugin, Everythinks funktioniert jetzt. Ich möchte alles testen testen mit php Unit!Testen von CakePhp3 plugin -> Fehler beim Laden des Plugins/fehlende Klasse

Aber wenn ich PHP-Einheit nennen es sagen, dass er nicht die Klasse wie das gefunden tun:

Fatal error: Class 'BsHelpers \ View \ Helper \ BsHelper' nicht im Verzeichnis C: \ wamp3 \ www \ wac_lucien \ BsHelpers \ BsHelpersCakePHP3 \ 3.2 \ Plugins \ BsHelpers \ Tests \ Testcase \ View \ Helper \ BsHelpersTest.php on line 26

So genau die Dokumentation von CakePHP3 zu folgen, nachdem ich versucht, treffen das Problem bei der begenning. Für jetzt habe ich nur das:

<?php 
namespace BsHelpers\Test\TestCase\View\Helper; 

use BsHelpers\View\Helper\BsHelper; 
use Cake\TestSuite\TestCase; 
use Cake\View\View; 

class BsHelperTest extends TestCase 
{ 
    public function setUp() 
    { 
     parent::setUp(); 

     $this->View = new View(); 
     $this->Bs = new BsHelper($this->View); 
    } 

    public function testBar() 
    { 

    } 
} 

Ich denke, Problem kann in bootstrap.php sein. Der Pfad des Plugin Loader kann falsch sein, aber ich weiß nicht, wie bis setzen ...

Plugin::load('BsHelpers', ['path' => ROOT . DS]); 

Im composer.json meiner Plugin Ich habe:

"autoload": { 
    "psr-4": { 
     "App\\": "src", 
     "BsHelpers\\": "./plugins/BsHelpers/src", 
     "BsHelpers\\Test\\": "./plugins/BsHelpers/tests" 
    } 
}, 

ich php aufrufen Unit-Test (in meinem Plugin-Ordner)

vendor\bin\phpunit 

Und mein phpunit.xml.dist tun sieht aus wie

<phpunit 
colors="true" 
stopOnFailure="false" 
bootstrap="./tests/bootstrap.php" 
> 

<testsuites> 
    <testsuite name="BsHelpers Test Cases"> 
     <directory>./tests/</directory> 
    </testsuite> 
</testsuites> 

<filter> 
    <whitelist> 
     <directory suffix=".php">./src/</directory> 
    </whitelist> 
</filter> 

Jede Idee, warum ich meinen Helfer während des Tests nicht erreichen kann?

Pls Jungs Ich brauche wirklich Ideen

+0

Hört sich eher an, als wäre Ihre Autoload-Konfiguration ('composer.json') falsch, oder Sie verwenden nicht den richtigen Composer-Autoloader aus dem Plug-in-Vendor-Ordner. Ohne zusätzliche Informationen über die erwähnten möglichen Probleme und einige Details darüber, wie Sie die Tests tatsächlich ausführen/phpunit aufrufen, ist es ziemlich unmöglich für irgendjemanden, etwas anderes als Raten zu tun. – ndm

+0

Ok Entschuldigung für einige Informationen vergessen! Ich werde das zur Ausgangsfrage hinzufügen! –

+0

Diese Datei sieht komisch aus, sie sieht eher wie eine Composer-Datei auf Anwendungsebene aus, nicht eine von einem Plugin !? Entwickeln Sie ein eigenständiges Plugin oder ist es Teil einer Anwendung? Wie/wo laden Sie den Autoloader ('vendor/autoload.php')? – ndm

Antwort

0

UPDATE

ich wieder Tests laufen versucht. Ich habe den Fehler gefunden und die Zeile geändert, aber ich verstehe nicht, warum das in Tests Probleme verursacht hat.

Anfangs versuchte ich CakePHP3 Plugins zu verstehen, indem ich mit this plugin from friendsofcake arbeitete, als ich mein Plugin erstellte (um weitere Funktionalitäten einzufügen) Ich habe einfach die composer.json kopiert, um das Ergebnis mit meinem Plugin zu sehen. Vergiss einfach, diesen Teil zu ändern.

So war Fehler in der composer.json des Plugins:

{ 
"name": "friendsofcake/bootstrap-ui", 
"description": "Twitter Bootstrap 3 support for CakePHP 3", 
"type": "cakephp-plugin" 
} 

ich die Namenszeile mit

geändert
"name": "lucienleroux/bs-helpers", 

Und ich verstehe wirklich nicht, warum die das Problem gelöst, weil nirgendwo Ich setze einen Namen wie "Lucienleroux/bs-helpers" in meinem Plugin. Und tatsächlich funktioniert es mit jeder anderen Zeichenfolge wie "test/bs_helpers" ... Wenn Sie verstehen, dass ich an der Antwort interessiert bin!

Verwandte Themen