在phpunit测试中禁止symfony 4响应正文

时间:2018-11-20 18:56:53

标签: phpunit symfony4

我正在将Silex应用程序迁移到Symfony Flex,到目前为止一切正常,除了运行phpunit测试时,我将响应主体输出输入到phpunit输出中。

即。

> bin/phpunit
#!/usr/bin/env php
PHPUnit 6.5.13 by Sebastian Bergmann and contributors.

Testing unit
.......<http://data.nobelprize.org/resource/laureate/914> a <http://data.nobelprize.org/terms/Laureate> , <http://xmlns.com/foaf/0.1/Person> ;
<http://www.w3.org/2000/01/rdf-schema#label> "Malala Yousafzai" ;
<http://data.nobelprize.org/terms/laureateAward> <http://data.nobelprize.org/resource/laureateaward/974> ;
<http://data.nobelprize.org/terms/nobelPrize> <http://data.nobelprize.org/resource/nobelprize/Peace/2014> ;

然后整个RDF文档

 .                                                            8 / 8 (100%)

 Time: 1.07 seconds, Memory: 14.00MB

 OK (8 tests, 71 assertions)

 Generating code coverage report in Clover XML format ... done

它工作正常,但我不知道如何禁用此输出?

请求很简单

$this->client->request('GET', "/nobel_914.ttl", [], [], ['HTTP_ACCEPT' => $request_mime]);
$this->assertEquals(200, $this->client->getResponse()->getStatusCode(), "GET should be allowed.");
$response = $this->client->getResponse();
$charset = $response->getCharset();

并且在这样的基类中设置了客户端

class MyAppTestBase extends WebTestCase
{
  /**
   * @var \Symfony\Component\BrowserKit\Client
   */
  protected $client;

  /**
   * {@inheritdoc}
   */
  public function setUp() {
      parent::setUp();
      $this->client = static::createClient();
      $this->client->catchExceptions(false);
  }

我确定我缺少明显的东西,但这对我来说是新的。我正在“测试”环境中运行,并且使用“调试” == false。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

所以这可能一直是个问题,但在从Silex转向Symfony Flex的过程中才刚刚暴露出来。

我们通过以下方式流式传输响应

$filename = $this->path;
$stream = function () use ($filename) {
    readfile($filename);
};
return new StreamedResponse($stream, 200, $res->headers->all());

readfile将内容扔到输出缓冲区。将readfile切换为file_get_contents可以解决此问题

$filename = $this->path;
$stream = function () use ($filename) {
    file_get_contents($filename);
};
return new StreamedResponse($stream, 200, $res->headers->all());