phpunit с буферизацией вывода


Я пытаюсь интегрировать PHPUnit в большой проект, все кажется прекрасным, за исключением того, что все методы, которые полагаются на ob_start(), приведут к рискованному тестированию.

Читая онлайн, кажется, что рискованные тесты - это такие тесты, которые выполняют код, не охватываемый методом тестирования. Однако я вообще не использовал аннотацию @covers, и это происходит только в ob_start().

Итак, несколько вопросов:

  1. Возможно ли решить эту проблему?
  2. Есть ли что-то изначально не так с ob_start, когда дело доходит до тестирования?
  3. Есть ли способ обойти это?(если это невозможно решить).

Вариант использования - использование фреймворка, представления которого возвращаются (вместо отправки в браузер), Codeigniter является классическим примером, в котором вы можете возвращать представления. Возвращаемые представления зависят от ob_start(). Большое спасибо!

Author: Patrick, 2015-03-26

1 answers

Решение двоякое, поскольку оно вращается вокруг двух проблем, которые у меня были.

  1. Что касается конкретной проблемы, используя представления в фреймворке (codeigniter), я просто использовал макет для загрузчика, поэтому я реализовал пустую функцию, которая фактически не загружает и выводит html.
  2. Что касается фактической проблемы, с которой я столкнулся с поведением PHPUnit, похоже, что PHPUnit(4.5) будет считать, что тест является рискованным при использовании ob_start и ob_clean, Однако при использовании ob_get_clean тестирование работает, как и ожидалось. Я не уверен, почему, так как я не погружался в сам код, но это решило проблему для меня
 3
Author: Patrick, 2015-03-27 20:52:16