PHPUnit - Сброс переменных - PullRequest
       4

PHPUnit - Сброс переменных

14 голосов
/ 09 ноября 2011

Я только начал использовать PHPUnit, и мне интересно, есть ли сборка для сброса содержимого переменной?

Сценарий использования заключается в том, что, поскольку я уже говорю с разрабатываемым кодом, я могу использовать PHPUnit не только для проверки стабильности этого кода, но и для вывода отладочной информации в процессе разработки.

Я знаю, что xdebug может восполнить этот пробел для меня, но иногда проще вывести некоторую информацию в вывод, чем возиться с моим отладчиком IDE, что более полезно для поиска причины ошибки.

Я знаю, что могу просто сделать обычную переменную var_dump, мне просто интересно, есть ли для этого интерфейс PHPUnit.

Спасибо!

Редактировать:

Решили взломать его вместе, следуя ответу Дэвида.

Ни в коем случае не идеальное решение, но оно делает работу за меня.Если кому-то интересно:

*** PHPUnit-3.6.3/PHPUnit/Framework/TestCase.php    2011-11-09 12:25:38.000000000 -0500
--- PHPUnit/Framework/TestCase.php  2011-11-09 15:27:02.193317219 -0500
***************
*** 291,296 ****
--- 291,298 ----
       * @var boolean
       */
      private $outputBufferingActive = FALSE;
+   
+   public static $ob_output = array();

      /**
       * Constructs a test case with the given name.
***************
*** 913,921 ****
--- 915,927 ----
          }

          try {
+           ob_start();
              $testResult = $method->invokeArgs(
                $this, array_merge($this->data, $this->dependencyInput)
              );
+           
+           Static::$ob_output[ $method->name ] = ob_get_contents();
+           ob_end_clean();
          }

          catch (Exception $e) {

А для использования с VisualPHPUnit:

<code>*** NSinopoli-VisualPHPUnit-b7ba91a/ui/test.html    2011-11-08 15:38:44.000000000 -0500
--- ui/test.html    2011-11-09 15:38:44.797329455 -0500
***************
*** 3,15 ****
                                  <div class="name" title="Test Status: <?php echo ucfirst($test['status']);?>"><?php echo $test['name'];?></div> 
                                  <div class="stats"><?php echo $test['message'];?></div>
                                  <div class="expand button"><?php echo $test['expand'];?></div>
!                                 <div class="more test <?php echo $test['display'];?>"> 
                                      <div class="variables rounded <?php echo $test['variables_display'];?>"> 
                                          <pre><?php echo $test['variables_message'];?>
!
<?php echo $test['trace_message'];?>
! --- 3,21 ----Статус теста: <? Php echo ucfirst ($ test ['status']);?>!
<?php echo $test['variables_message'];?>
!
<?php echo $test['trace_message'];?>
!!!

OB выход

!!
<?php echo PHPUnit_Framework_TestCase::$ob_output[$test['name']]; ?>
!!

Ответы [ 5 ]

22 голосов
/ 10 ноября 2011

Обновление:

Обратите внимание, что этот ответ относится только к PHPUnit с 3.6.0 по 3.6.3.

Когда PHPUnit 3.6.4 выпущен, он больше не разрешает вывод по умолчанию.


Оригинальный ответ

Если вы хотите увидеть проглоченный вывод, вы можете использовать phpunit --debug. Это превратит все выходные предложения и покажет ваши var_dumps.

Образец теста:

<?php

class OutputTest extends PHPUnit_Framework_TestCase {

    public function testOutput() {
        var_dump("HI!");
        $this->assertTrue(true);
    }   

}

Бег phpunit outputTest.php

PHPUnit 3.6.2 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 3.25Mb

OK (1 test, 1 assertion)

Бег phpunit --debug outputTest.php

PHPUnit 3.6.2 by Sebastian Bergmann.


Starting test 'OutputTest::testOutput'.
.string(3) "HI!"


Time: 0 seconds, Memory: 3.25Mb

OK (1 test, 1 assertion)
11 голосов
/ 10 ноября 2011

с использованием ob_flush() также будет работать, например, в вашем тесте

var_dump($foo);
ob_flush();

, но имейте в виду, что это также сбрасывает все выходные данные, сгенерированные PHPUnit.

9 голосов
/ 18 июля 2013

Попробуй у меня print_r () работает в терминале.

4 голосов
/ 10 ноября 2011

Нет, и на самом деле PHPUnit 3.6 проглотит весь вывод, полученный из теста (возможно, только в строгом режиме).

0 голосов
/ 03 января 2019

Как и другие рекомендованные, добавьте --debug в качестве параметра, а затем используйте dump($your_variable); для проверки его содержимого. На всякий случай я работаю над Drupal 8 и PHPUnit 6.5.13. Вот пример вывода dump:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...