Файл журнала проверки phpunit

У меня есть несколько интеграционных тестов с phpunit,
и в процессе испытаний есть некоторые журналы, записанные в файлы в системе.

Я хотел бы проверить, была ли написана строка во время теста, это возможно?

пример:

/** @test */
function action_that_writes_to_log() {
$this->call('GET', 'path/to/action', [], [], $requestXml);

//I want this:
$this->assertFileHas('the log line written', '/log/file/path.log');
}

0

Решение

Очевидный способ:

Реализация пользовательского метода подтверждения, подобного тому, который вы предлагаете: assertFileHas, Это довольно просто, просто проверьте, появляется ли строка в файле. Проблема, которую вы можете получить, состоит в том, что линия уже может существовать из другого теста или тот же тест уже запущен. Возможным решением для этого является удаление содержимого журналов перед каждым тестом или тестовым классом, в зависимости от ваших потребностей. Вам понадобится метод, который удаляет журналы и вызывает его из setUp или же setUpBeforeClass,

Я бы пошел с другим подходом: насмешка над компонентом журналирования и проверка правильности вызова:

$logger_mock->expects($this->once())
->method('log')
->with($this->equalTo('the log line written'));

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]