Я использую класс для сессии, как предложил Фил.Если вы вызываете session_start () вручную, вы привязываете свой код к реализации сеанса PHP.Мой вызов session_start защищен моим сессионным классом со следующим:
if (!isset($_SESSION))
{
// If we are run from the command line interface then we do not care
// about headers sent using the session_start.
if (PHP_SAPI === 'cli')
{
$_SESSION = array();
}
elseif (!headers_sent())
{
if (!session_start())
{
throw new Exception(__METHOD__ . 'session_start failed.');
}
}
else
{
throw new Exception(
__METHOD__ . 'Session started after headers sent.');
}
}
Edit:
Приведенный выше код войдет в ваш сессионный класс (и, вероятно, будет вызван некоторымконструктор).Командная строка PHP создает массив вместо вызова session_start (который не работает в командной строке).
При тестировании кода, основанного на переменных сеанса, я проверяю переменные сеанса в своем тесте:
$_SESSION = array('key1' => 'value you want', 'key2' => 'etc.');
Это позволяет вам протестировать все возможные настройки сеанса, которые вы получите на странице.
Проверка создания значений сеанса, по моему мнению, относится к коду, который их создает, поэтому высмеивает их существование.кажется, хорошо для меня.Таким образом, вы тестируете каждый модуль отдельно, а не комбинируете их и сохраняете значения сеанса между тестами.