КАК объединить переменные сеанса в PHP? - PullRequest
6 голосов
/ 04 октября 2011

Я запускаю свои модульные тесты через командную строку, и все работает нормально.

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

Полагаю, вы не можете получить доступ к переменным сеанса, когда не находитесь в браузере.

Как я могу сделать это с помощью PHP?Возможно ли это?

Кстати, я использую CodeIgniter 1.7.2 и CIUnit v0.17

Любые предложения или комментарии будут мне очень полезны.

Спасибо

1 Ответ

10 голосов
/ 04 октября 2011

Я использую класс для сессии, как предложил Фил.Если вы вызываете 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.');

Это позволяет вам протестировать все возможные настройки сеанса, которые вы получите на странице.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...