2016-09-20 6 views
0

Ich habe ein Plugin mit nur einem Controller mit nur einer Aktion:CakePHP 3.3: auf Tests, fragt es für die Fehlervorlagen

class AssetsController extends Controller 
{ 
    /** 
    * Renders an asset 
    * @param string $filename Asset filename 
    * @param string $type Asset type (`css` or `js`) 
    * @return Cake\Network\Response|null 
    */ 
    public function asset($filename, $type) 
    { 
     $this->response->type($type); 
     $this->response->file(ASSETS . DS . $filename); 

     return $this->response; 
    } 
} 

Dieser sendet nur eine Asset-Datei.

Jetzt schreibe ich einen Test für eine Asset-Datei, die nicht existiert.

public function testAssetNoExistingFile() 
{ 
    $this->get('/assets/css/noexistingfile.css'); 

    $this->assertResponseFailure(); 
} 

Aber es fragt nach Fehler Vorlage:

1) Assets\Test\TestCase\Controller\AssetsControllerTest::testAssetNoExistingFile 
Cake\View\Exception\MissingTemplateException: Template file "Error/error500.ctp" is missing. 

Das Plugin nicht Vorlage hat und es gibt keine App mit Vorlagen. Ich würde also erwarten, dass es Vorlagen aus dem CakePHP-Core verwendet, aber das passiert nicht. Wo liege ich falsch?

Antwort

1

Es gibt keine Error/error500.ctp Vorlage im Kern, das muss die Anwendung liefern.

Wenn Sie Plugins testen, sollten Sie eine geeignete Testanwendungsumgebung registrieren und die erforderlichen Vorlagen dafür bereitstellen. Wenn Sie sich ansehen, wie der CakePHP-Core und die Plugins es tun, erstellen/registrieren sie eine Dummy-Anwendung im Ordner tests, wo solche Template-Dateien abgelegt werden können.

Siehe auch

+0

Ich habe eine App für Tests, aber ich glaube nicht, dass es auch Vorlagen integrieren sollte. Also muss ich Fehlervorlagen und ein Standardlayout hinzufügen. Ok, danke @ndm –

+0

Sorry: Fehlervorlagen und ein Fehlerlayout! Ok, es funktioniert jetzt. –

Verwandte Themen