как я переопределяю php://, вводят при выполнении модульных тестов

Я пытаюсь записать модульный тест на контроллер с помощью Пехлеви и PHPUnit

В коде я получаю данные из php://вход

$req = new Zend_Controller_Request_Http();
$data = $req->getRawBody();

Мой код хорошо работает, когда я тестирую реальное приложение, но если я не смогу снабдить данными как сырыми данными http сообщение, $data всегда будет пробелом. getRawBody () метод в основном называет file_get_contents ('php://вход'), но как я переопределяю это для предоставления данных тестирования к моему приложению.

19
задан Charles 1 April 2011 в 03:25
поделиться

2 ответа

При условии, что $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();

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

2
ответ дан 30 November 2019 в 04:52
поделиться

Вы можете попробовать имитировать объект в своих модульных тестах. Примерно так:

$req = $this->getMock('Zend_Controller_Request_Http', array('getRawBody'));
$req->method('getRawBody')
    ->will($this->returnValue('raw_post_data_to_return'));
7
ответ дан 30 November 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: