Я помещаю PHPUnit тестирование в существующий проект. Глобальные постоянные переменные широко используются. В моем модуле функции тестирования терпят неудачу, поскольку глобальные переменные равны нулю. Вот пример неудачного теста
static $secret_key = "a secret Key"; class secret_key_Test extends PHPUnit_Framework_TestCase { function test_secret_key() { global $secret_key; $this->assertEquals($secret_key, "a secret Key"); } } >> Failed asserting that 'a secret Key' matches expected null
Любая помощь будет принята с благодарностью
Обновление: я попытался удалить статические и добавить
protected $backupGlobals = FALSE;
К объявлению класса без успеха.
Этот ответ не работает. Я задал практически идентичный вопрос и получил ответ, который имеет больше смысла; вы не можете перезаписать защищенное свойство $ backupGlobals в тестовом классе, которое увидит PHPUnit. Если вы работаете в командной строке, кажется, что вы можете заставить Globals работать, создав файл конфигурации xml и настроив backupGlobals на false.
EDIT: вам нужно объявить $ secret_key как глобальное, так и присвоить ему значение в глобальном пространстве при использовании PHPUnit. PHP по умолчанию помещает глобально инициализированные переменные в глобальное пространство имен, но PHPUnit изменяет это значение по умолчанию при резервном копировании глобальных переменных!
Должны произойти следующие изменения:
global $secret_key; // Declaring variable global in global namespace $secret_key = "a secret Key"; // Assigning value to global variable
Теперь ваш код должен работать.
Вы должны попросить phpunit не создавать резервные глобальные переменные
protected $backupGlobals = FALSE;
как это сказано в оригинальной статье С. Бергмана: http://sebastian-bergmann.de/archives/797-Global-Variables-and-PHPUnit.html