Я тестирую класс регистратора с помощью метода, который открывает журнал следующим образом:
openlog($this->identifier, $this->option, $this->facility);
syslog($level, $message)
closelog();
$facility
что мой регистратор пишет в настоящее время установлен как LOCAL0
Когда я тестирую свой логгер, я получаю следующее сообщение:
Broadcast message from systemd-journald@myWS:
phpserver7.0[9125]: Logger message
Как я могу подавить это сообщение с помощью PHPUnit или в моем коде?
Редактировать:
Похоже, это происходит только тогда, когда я регистрирую сообщение со степенью серьезности «экстренный», что означает уровень серьезности 0.
https://en.wikipedia.org/wiki/Syslog#Severity_level
Википедия утверждает:
Этот уровень не должен использоваться приложениями.
Тем не менее, это часть абстрактного логгера PSR-3, поэтому я просто хотел бы иметь возможность подавить сообщение с помощью PHPUnit.
В вашем тестовом методе вы можете подавить вывод, обернув буфер вывода вокруг вашего вызова, который производит вывод. Пример:
/**
* @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();
}
Других решений пока нет …