2016-03-31 11 views
6

मैंने अपना पहला लिखने के लिए कार्यात्मक परीक्षणों के बारे में Symfony documentation का पालन किया, लेकिन मेरे पास कुछ समस्याएं हैं। प्रतिक्रिया मैं ब्राउज़र के माध्यम से मिलता है अच्छा काम करता है:सिम्फनी कार्यात्मक परीक्षण विफल रहता है लेकिन उसी अनुरोध ब्राउज़र में काम करता है

Browser response

लेकिन जब मैं खोल में phpunit -c app/ चलाने मैं एक विफलता मिलता है।

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

अगर मैं एक और कोशिश:

1) AppBundle \ टेस्ट \ नियंत्रक \ MeterAPIControllerTest :: testGetAllVariables जोर देते हुए 500 मैचों की उम्मीद है कि 200.

इस कोड है विफल परीक्षण दावा, मुझे भी विफलता मिलती है।

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

संपादित

जब मैं app/logs/test.log में phpunit चलाने मैं एक PHP अपवाद प्राप्त करें:

[2016/03/31 15:25:21] request.CRITICAL: Uncaught पीएचपी अपवाद सिद्धांत \ सामान्य \ दृढ़ता \ मैपिंग \ मैपिंग अपवाद: " 'एपबंडल \ Entity \ EM2Meter' वर्ग के लिए अवैध मैपिंग फ़ाइल 'AppBundle.Entity.EM2Meter.orm.yml' फ़ाइल।" /एप्लिकेशन/एमएएमपी/एचटीडीओक्स/आईएसओ 50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php लाइन 86 {"अपवाद": "[ऑब्जेक्ट] (सिद्धांत \ सामान्य \ दृढ़ता \ मैपिंग \ मैपिंग अपवाद (कोड: 0): कक्षा 'एपबंडल \ Entity \ EM2Meter' के लिए अमान्य मैपिंग फ़ाइल 'AppBundle.Entity.EM2Meter.orm.yml' /अनुप्रयोग/एमएएमपी/htdocs/iso50k1_tst_symfony/विक्रेता/सिद्धांत/आम/lib/सिद्धांत/आम/हठ/मानचित्रण/MappingException.php: 86) "} []

कैसे मैं इसे ठीक कर सकते हैं?

+2

हैं आप सुनिश्चित करें कि आपके सही बंदरगाह के लिए अनुरोध कर रहा? – DevDonkey

+0

@DevDonkey हां, अनुरोध सही है। – Francesco

+1

क्या आप निश्चित हैं? मुझे लगता है कि आप पाएंगे कि जब तक आप एक नए क्लाइंट को तुरंत चालू नहीं करते हैं, तो यह पोर्ट 80 के लिए डिफ़ॉल्ट होगा। – DevDonkey

उत्तर

1

आपको पोर्ट 8000 पर स्थानीय होस्ट सर्वर से संपर्क करने सिम्फोनी ग्राहक नहीं बताया है, इसकी अभी भी 80

को दोषी जब आप अपने ग्राहक का दृष्टांत, इस तरह मेजबान निर्दिष्ट करें।

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

धन्यवाद लेकिन दुर्भाग्यवश यह समस्या को ठीक नहीं करता है। – Francesco

+0

सर्वर लॉग क्या कहते हैं? – DevDonkey

+0

मैंने प्रश्न अपडेट किया है। – Francesco

0

ऐसा लगता है कि यहां कैश समस्या है। मुझे लगता है कि वर्तमान वातावरण के लिए कैश साफ करने के लिए एक अच्छा अभ्यास परीक्षण चलाने से पहले और कार्यात्मक परीक्षण के लिए अपनी परियोजना को चलाने से पहले है:

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

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

संबंधित मुद्दे