2016-03-31 33 views
6

Podążyłem za testami funkcjonalnymi Symfony documentation, aby napisać mój pierwszy, ale mam pewne problemy. W odpowiedzi dostaję poprzez przeglądarkę działa dobrze:Test funkcjonalny Symfony kończy się niepowodzeniem, ale to samo żądanie działa w przeglądarce

Browser response

Ale kiedy biegnę phpunit -c app/ w powłoce mam awarię.

1) AppBundle \ Test \ Controller \ MeterAPIControllerTest :: testGetAllVariables Failed twierdząc, że oczekuje 500 meczów 200.

Jest to kod:

<?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()); 
    } 
} 

Gdy próbuję kolejny asercja testowa, również otrzymuję błąd.

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

EDIT

Kiedy biegnę phpunit w app/logs/test.log otrzymuję wyjątek PHP:

[31.03.2016 15:25:21] request.CRITICAL: Uncaught PHP Wyjątek Doctrine \ Common \ Persistence \ Mapping \ MappingException: "Nieprawidłowe mapowanie plik" AppBundle.Entity.EM2Meter.orm.yml "dla klasy " AppBundle \ Entity \ EM2Meter "." pod adresem /Aplikacje/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php linia 86 {"wyjątek": "[obiekt] (Doctrine \ Common \ Persistence \ Mapowanie \ MappingException (kod: 0): Nieprawidłowy plik odwzorowania "AppBundle.Entity.EM2Meter.orm.yml" dla klasy "AppBundle \ Entity \ EM2Meter" w /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Trwałość/Mapowanie/MappingException.php: 86) "} []

Jak mogę rozwiązać ten problem?

+2

jesteś pewien swojej wnioskiem do właściwego portu? – DevDonkey

+0

@DevDonkey Tak, żądanie jest poprawne. – Francesco

+1

jesteś pewien? Myślę, że przekonasz się, że jeśli nie określisz kiedy tworzysz nowego klienta, domyślnie będzie to port 80. – DevDonkey

Odpowiedz

1

Nie powiedział symfony klienta, aby skontaktować się z serwerem localhost na porcie 8000, to nadal zalegających do 80.

Po instancję klienta, określ hosta takiego.

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

Dzięki, ale niestety to nie rozwiązuje problemu. – Francesco

+0

co mówią dzienniki serwera? – DevDonkey

+0

Zaktualizowałem pytanie. – Francesco

0

Wygląda na to, że istnieje problem z pamięcią podręczną. Myślę, że jest to dobra praktyka, aby wyczyścić pamięć podręczną dla obecnej sytuacji przed wykonaniem testów i przed uruchomieniem projektu do testów funkcjonalnych:

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

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