Подавить тело ответа Symfony 4 в тесте phpunit

Я переношу приложение Silex на Symfony Flex, и пока все работает, за исключением того, что когда я запускаю тесты phpunit, я получаю вывод тела ответа в вывод phpunit.

ie.

> 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.

Любая помощь приветствуется.


person Community    schedule 20.11.2018    source источник
comment
Вот полное исполнение, если хотите посмотреть. ci.appveyor.com/project/acoburn/static-ldp/ сборки/20444722#L302   -  person    schedule 21.11.2018
comment
Кроме того, вот PR со всеми изменениями кода, которые я реализую. github.com/trellis-ldp/static-ldp/pull/39 Вы можете увидеть тестовый код и т. д., если это поможет.   -  person    schedule 21.11.2018
comment
Я не знаком с WebTestCase, но поскольку это интеграционный или функциональный тест, а не модульный тест, вы всегда можете буферизовать вывод.   -  person scrowler    schedule 21.11.2018


Ответы (1)


Так что это, вероятно, было проблемой все время, но только начало проявляться при переходе с 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());
person Community    schedule 21.11.2018