Имея некоторые проблемы с использованием PHPUnit для тестирования моих контроллеров.
В коде, к которому я работал до сих пор, была реализована $_POST
или другие переменные запроса:
$_SERVER['REQUEST_METHOD'] = 'POST';
$_POST = array(
'test' => true
);
Большинство тестов отлично работали таким образом, пока я не столкнулся с методами, использующими функцию filter_input_array
:
$_SERVER['REQUEST_METHOD'] = 'POST';
$_REQUEST = $_POST = $GLOBALS['_POST'] = array(
'test' => true
);
// ....
var_dump(filter_input_array(INPUT_POST));
NULL
Я не хочу удалять функции filter_input
из не моего кода, но я не могу заставить их работать в тестах.
Versionings:
PHP 5.5.9-1ubuntu4.9 (cli) (построено: 17 апреля 2015 г. 11:44:57)
Apache/2.4.7 (Ubuntu)
PHPUnit 4.6.6 от Себастьяна Бергмана и авторов.
Любая помощь будет оценена.
EDIT 2015.05.11
Настройка $_SERVER
с помощью CONTENT_LENGTH
и CONTENT_TYPE
не устраняет проблему. Моя версия PHP не позволяет мне писать на php://stdin
так, как описано в PHP 5.6.0 chagelog (или как я его понимаю), но file_put_contents(STDIN,..)
преуспевает, но не работает в любом случае.
Поскольку это тест phpunit, возможно, есть какая-то аннотация или запись phpunit.xml
, которую я еще не знаю, что может решить эту проблему в настройке php-cgi POST способ.