2016-03-31 4 views
6

Ich folgte der Symfony documentation über Funktionstests, um meine erste zu schreiben, aber ich habe einige Probleme. Die Antwort, die ich über Browser erhalten funktioniert gut:Symfony Funktionstest fehlgeschlagen, aber die gleiche Anfrage funktioniert im Browser

Browser response

Aber wenn ich phpunit -c app/ in der Schale laufen bekomme ich einen Fehler.

1) AppBundle \ Tests \ Controllers \ MeterAPIControllerTest :: testGetAllVariables behaupten konnte nicht, dass 500 Matches 200 erwartet

Dies ist der Code:

<?php 

namespace AppBundle\Tests\Controller; 

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class MeterAPIControllerTest extends WebTestCase 
{ 
    public function testGetAllVariables() 
    { 
     $client = static::createClient(); 
     $crawler = $client->request(
      'GET', 
      '/meters/121/120/variables' 
     ); 

     // Assert a specific 200 status code 
     $this->assertEquals(200, $client->getResponse()->getStatusCode()); 
    } 
} 

Wenn ich noch einmal versuchen Testbehauptung, ich bekomme auch Fehler.

// Assert that the "Content-Type" header is "application/json" 
$this->assertTrue(
    $client->getResponse()->headers->contains(
     'Content-Type', 
     'application/json' 
    ) 
); 

EDIT

Als ich phpunit in app/logs/test.log laufen bekomme ich eine PHP Ausnahme:

[2016.03.31 15.25.21] request.CRITICAL: Nicht abgefangene PHP Ausnahme Doctrine \ Common \ Persistence \ Mapping \ MappingException: "Ungültige Zuordnung Datei 'AppBundle.Entity.EM2Meter.orm.yml' für Klasse 'AppBundle \ Entity \ EM2Meter'." bei /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php Linie 86 { "Ausnahme": "[object] (Lehre \ Common \ Persistence \ Mapping \ MappingException (Code: 0):. Ungültige Zuordnungsdatei 'AppBundle.Entity.EM2Meter.orm.yml' für die Klasse 'AppBundle \ Entity \ EM2Meter' bei /Applications/MAMP/htdocs/iso50k1_tst_symfony/Verkäufer/Lehre/common/lib/Lehre/Common/Persistenz/Mapping/MappingException.php: 86) "} []

Wie kann ich dieses Problem beheben?

+2

sind Sie sicher, dass Ihr an den richtigen Port anfordert? – DevDonkey

+0

@DevDonkey Ja, die Anfrage ist korrekt. – Francesco

+1

bist du sicher? Ich denke, dass Sie feststellen werden, dass wenn Sie nicht angeben, wenn Sie einen neuen Client instanziieren, es Port 80 standardmäßig verwenden wird. – DevDonkey

Antwort

1

Sie haben den symfony-Client sagte dem lokalen Host-Server auf Port 8000 zu kontaktieren, seine säumigen noch bis 80.

Wenn Sie Ihren Client instanziiert, geben Sie den Host wie diese.

$client = static::createClient([], [ 
    'HTTP_HOST' => 'localhost:8000', 
]); 
+0

Danke, aber leider behebt das das Problem nicht. – Francesco

+0

Was sagen die Serverprotokolle? – DevDonkey

+0

Ich habe die Frage aktualisiert. – Francesco

0

Es scheint hier ein Cache-Problem zu sein. Ich denke, es ist eine gute Praxis ist Cache für die aktuelle Umgebung zu reinigen, bevor die Tests ausgeführt und vor einem Projekt für Funktionstests ausgeführt wird:

$ php bin/console cache:clear --env=dev

$ php bin/console cache:clear --env=tests