Один из возможных способов обойти это - использовать «ложную» замену для функции setcookie()
.
Это распространенный метод в модульном тестировании, когда вы хотите протестировать что-либо, опирающееся на внешний класс или функцию, на которую вы не хотите влиять в текущем тесте.
Способ сделать это - создать определение функции-заглушки для setcookie()
в вашем коде модульного теста. Затем он будет вызываться во время теста вместо реальной функции setcookie()
. Как именно вы реализуете эту функцию-заглушку, зависит от вас, и будет зависеть от того, для чего ваш код ее использует.
Основная проблема, с которой вы столкнетесь при таком подходе, заключается в том, что PHP не позволяет переопределять существующие функции по умолчанию - если вы попробуете это в стандартной установке PHP, вы получите «error: function not redeclared» .
Решением этой проблемы является расширение PHP1 Runkit , которое специально разработано для такого типа тестирования и позволяет переименовывать существующую функцию , включая встроенную.
Если вы сконфигурируете установку PHP в своей среде тестирования для включения расширения Runkit, вы сможете выполнить этот вид теста.
Надеюсь, это поможет.