Symfony功能测试失败,但同样的请求在浏览器中有效

Fra*_*sco 5 php phpunit functional-testing symfony

我按照Symfony关于功能测试的文档来编写我的第一个,但是我有一些问题.我通过浏览器得到的响应很好:

浏览器响应

但是当我phpunit -c app/在shell中运行时,我会失败.

1)AppBundle\Tests\Controller\MeterAPIControllerTest :: testGetAllVariables声明500匹配预期200失败.

这是代码:

<?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()); 
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试另一个测试断言,我也会失败.

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

编辑

当我运行时phpunit,app/logs/test.log我得到一个PHP异常:

[2016-03-31 15:25:21] request.CRITICAL:未捕获的PHP Exception Doctrine\Common\Persistence\Mapping\MappingException:"类AppBundle\Entity的映射文件'AppBundle.Entity.EM2Meter.orm.yml'无效\ EM2Meter"." at /Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php第86行{"exception":"[object](Doctrine\Common\Persistence\Mapping\MappingException) (代码:0):类'AppBundle\Entity\EM2Meter'的映射文件'AppBundle.Entity.EM2Meter.orm.yml'无效.在/ Applications/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php:86)"} []

我怎样才能解决这个问题?

Dev*_*key 3

您还没有告诉 symfony 客户端在端口 8000 上联系本地主机服务器,它仍然默认为 80。

当您实例化客户端时,请像这样指定主机。

$client = static::createClient([], [
    'HTTP_HOST' => 'localhost:8000',
] );
Run Code Online (Sandbox Code Playgroud)