2016-12-15 2 views
2

Я тестирую класс регистратора с помощью метода, который открывает журнал следующим образом:PHPUnit собирает сообщения syslog?

openlog($this->identifier, $this->option, $this->facility); 
syslog($level, $message) 
closelog(); 

$facility, что мой регистратор записывает в настоящее время устанавливается как LOCAL0

Когда я модульного тестирования мой регистратор я получаю следующее сообщение:

Broadcast message from [email protected]: 

phpserver7.0[9125]: Logger message 

Как я могу подавить это сообщение с помощью PHPUnit или в моем коде?

Edit:

Это только кажется, что произойдет, когда я вхожу сообщение с тяжестью "чрезвычайной ситуации" означает уровень серьезности 0.

https://en.wikipedia.org/wiki/Syslog#Severity_level

Википедии говорится:

Этот уровень не должен использоваться приложениями.

Тем не менее, это часть абстрактного регистратора PSR-3, хотя я бы просто хотел подавить сообщение с помощью PHPUnit.

ответ

1

В вашем методе тестирования вы можете подавить вывод путем упаковки выходного буфера вокруг вашего вызова, который производит вывод. Пример:

/** 
* @preserveGlobalState disabled 
* @runInSeparateProcess 
*/ 
public function testOutputCanSend() 
{ 
    ob_start(); 

    // Do some stuff here that outputs directly, e.g 
    openlog($this->identifier, $this->option, $this->facility); 
    syslog($level, $message) 
    closelog(); 

    ob_end_clean(); 
} 
Смежные вопросы