Я пытаюсь записать модульный тест на контроллер с помощью Пехлеви и PHPUnit
В коде я получаю данные из php://вход
$req = new Zend_Controller_Request_Http();
$data = $req->getRawBody();
Мой код хорошо работает, когда я тестирую реальное приложение, но если я не смогу снабдить данными как сырыми данными http сообщение, $data всегда будет пробелом. getRawBody () метод в основном называет file_get_contents ('php://вход'), но как я переопределяю это для предоставления данных тестирования к моему приложению.
При условии, что $req->getRawBody()
, как вы говорите, то же самое, что file_get_contents('php://input')
...
$test = true; /* Set to TRUE when using Unit Tests */
$req = new Zend_Controller_Request_Http();
if( $test )
$data = file_get_contents( 'testfile.txt' );
else
$data = $req->getRawBody();
Не идеальное решение, но похожее на то, что я использовал в прошлом при разработке скриптов для работы с трубопроводной электронной почтой с большим успехом.
Вы можете попробовать имитировать объект в своих модульных тестах. Примерно так:
$req = $this->getMock('Zend_Controller_Request_Http', array('getRawBody'));
$req->method('getRawBody')
->will($this->returnValue('raw_post_data_to_return'));