В настоящее время я разрабатываю простую инфраструктуру для PHP, которая управляет и отправляет вызовы ajax. Одна из его особенностей заключается в том, что он автоматически отправляет соответствующие заголовки в зависимости от того, что происходит в бэкэнде. За последние пару дней я начал писать множество модульных тестов для PHPUnit и пытаюсь получить приличное покрытие кода . (Да, большое покрытие кода само по себе ничего не значит, я знаю. Но это все же хороший показатель.)
Однако, поскольку (насколько мне известно) невозможно отправлять / проверять заголовки, когда PHP находится в режиме CLI, многие тесты необходимо выполнять через локальный веб-сервер. Это позволяет мне легко проверять заголовки и тело ответа. К сожалению, код, выполняемый во время этих тестов, естественно, не отслеживается PHPUnit. (Просто чтобы быть ясным: каждый фрагмент кода, который может быть проверен локально, проверяется локально. Но все, что связано с заголовками, не попадает в эту категорию.)
Я знаю, что могу инкапсулировать вызов header()
и заменить его во время тестирования на фиктивный объект. Однако тогда мне пришлось бы заново реализовать всю логику замены заголовка, а не всю его потенциальную причуду и ошибки, так что я бы, по сути, проверил свою собственную реализацию header()
вместо того, что на самом деле происходит - что является именно то, что я не хочу сделать.
Итак, я думаю, что мой вопрос таков: могу ли я каким-то образом включить эти «удаленные вызовы» в мой отчет о покрытии кода? Или я (и это мое предположение) просто должен смириться с тем, что мне не хватает 100% покрытия кода для тестирования в реальных условиях?