2017-02-02 41 views
1

Я был назначен на старый проект и в настоящее время выполняет тестовые примеры. У меня есть ошибка в определенном блоке кода, который сохраняет данные в excel.Можете ли вы «пропустить» блок кода в phpunit?

Однако метод выводит заголовок, и, таким образом, phpunit говорит «Невозможно изменить информацию заголовка».

Есть ли способ сказать phpunit как не выполнить этот метод?

$ codeCoverageIgnore не решает проблему, так как это зависит только от данных codecoverage. Я не могу найти что-то, что говорит phpunit, «не выполняйте этот».

header('Content-Type: application/vnd.ms-excel;charset=utf-8'); 
    header('Content-type: application/x-msexcel;charset=utf-8'); 
    header('Content-Disposition: attachment;filename="' . $this->sFileName . '"'); 
    header('Cache-Control: max-age=0'); 

А вот ошибка, которую я получаю от PHPUnit

Не удается изменить информацию в заголовке - заголовки уже прислал (выход начался в D: \ xampp7 \ PHP \ грушей \ PHPUnit \ Util \ Printer.php: 172)

+0

Привет и добро пожаловать в SO. Пожалуйста, добавьте код и/или вещи, которые вы попробовали, чтобы мы могли помочь вам лучше. Пожалуйста, прочитайте [ask] и [mcve] для получения более точных ответов. – davejal

+0

$ this-> warningOff(); или stderr = "true" в вашем phpunit.xml – mwweb

ответ

0

Существует два способа обойти это: реорганизовать код так, чтобы заголовки выводились в функции, которую вы можете переопределить, - чтобы не запускаться вообще, ИЛИ используйте output buffering для захвата заголовков (и любого другого выхода) вместо того, чтобы их отправить. Преимущество использования стиля буферизации заключается в том, что вывод может быть извлечен и проверен, а затем отброшен (ob_get_clean или ob_get_contents & ob_clean).