Я использую Zend-Framework и PHP-Unit.file_get_contents ('php: // input') empty in Unit Test
МОЯ УСТАНОВКА
У меня есть HTML форма:
<form method="post" action="/my-module/my-controller/do">
<input type="text" name="var" value="my value" />
<input type="submit" value="sumit" />
</form>
Это эквивалентно тестовый модуль:
public function test_myForm()
{
$this->request->setMethod('POST')->setPost(array(
'var' => 'my value'
));
$this->dispatch('/my-module/my-controller/do');
}
Действие контроллер выглядит следующим образом (для целей тестирования):
public function doAction()
{
print_r($_POST);
echo "\n -------------------- \n";
print_r(file_get_contents('php://input'));
echo "\n -------------------- \n";
die;
}
РЕЗУЛЬТАТОВ
Если я отправить форму в браузере я получаю этот результат:
Array ([var] => my value)
--------------------
var=my+value
--------------------
Но если сделать тест на единицу, это выход:
Array ([var] => my value)
--------------------
--------------------
МОЙ ВОПРОС
Код "file_get_contents ('php: // input')" возвращает пустую строку, я не знаю почему.
Для приложения, над которым я работаю, важно прочитать данные сообщения, подобные этому «file_get_contents ('php: // input»), а не просто использовать $ _POST.
Любая идея, почему это происходит и как ее решить?
В ajax есть способ отправить запрос полезной нагрузки, описанной здесь (http://stackoverflow.com/questions/9597052/how-to-retrieve-request-payload). Не требуется «application/x-www-form-urlencoded». – BlitZ