2016-03-31 16 views
6

Tôi đã theo dõi Symfony documentation về các bài kiểm tra chức năng để viết bài kiểm tra đầu tiên, nhưng tôi có một số vấn đề. Các phản ứng tôi nhận được thông qua trình duyệt hoạt động tốt:Kiểm tra chức năng của Symfony không thành công nhưng yêu cầu tương tự cũng hoạt động trong trình duyệt

Browser response

Nhưng khi tôi chạy phpunit -c app/ trong vỏ tôi nhận được một thất bại.

1) AppBundle \ thử nghiệm \ khiển \ MeterAPIControllerTest :: testGetAllVariables Không khẳng định rằng 500 trận đấu dự kiến ​​200.

Đây là mã:

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

Nếu tôi cố gắng khác kiểm tra khẳng định, tôi nhận được thất bại quá.

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

EDIT

Khi tôi chạy phpunit trong app/logs/test.log tôi nhận được một ngoại lệ PHP:

[2016/03/31 15:25:21] request.CRITICAL: của router PHP Ngoại lệ Học thuyết \ Common \ Persistence \ Mapping \ MappingException: "Ánh xạ không hợp lệ tệp 'AppBundle.Entity.EM2Meter.orm.yml' cho lớp 'AppBundle \ Entity \ EM2Meter'." tại /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php dòng 86 {"ngoại lệ": "[đối tượng] (Học thuyết \ Phổ biến \ Persistence \ Ánh xạ \ MappingException (mã: 0): Tệp ánh xạ không hợp lệ 'AppBundle.Entity.EM2Meter.orm.yml' cho lớp 'AppBundle \ Entity \ EM2Meter'. Tại /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php: 86) "} []

Làm cách nào để khắc phục sự cố này?

+2

bạn có chắc bạn yêu cầu vào cổng có đúng không? – DevDonkey

+0

@DevDonkey Có, yêu cầu là chính xác. – Francesco

+1

bạn có chắc chắn không? Tôi nghĩ rằng bạn sẽ thấy rằng trừ khi bạn chỉ định khi bạn khởi tạo một khách hàng mới, nó sẽ mặc định là cổng 80. – DevDonkey

Trả lời

1

Bạn chưa nói với khách hàng symfony để liên lạc với máy chủ localhost trên cổng 8000, nó vẫn mặc định cho 80.

Khi bạn nhanh chóng khách hàng của bạn, xác định các máy chủ như thế này.

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

Cảm ơn nhưng tiếc là điều này không khắc phục được sự cố. – Francesco

+0

nhật ký máy chủ nói gì? – DevDonkey

+0

Tôi đã cập nhật câu hỏi. – Francesco

0

Dường như có sự cố bộ nhớ cache ở đây. Tôi nghĩ rằng đó là một thực hành tốt để làm sạch bộ nhớ cache cho môi trường hiện tại trước khi chạy kiểm tra và trước khi chạy dự án của bạn để thử nghiệm chức năng:

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

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

Các vấn đề liên quan