Дразнящие необработанные данные POST - PullRequest
2 голосов
/ 05 декабря 2009

Я пишу тестовые случаи PHPUnit для веб-приложения. Поскольку тесты выполняются в среде командной строки, я высмеиваю ряд предопределенных переменных, таких как $ _ POST , $ _ GET , $ _ SERVER и т. Д. Мой тест должен убедиться, что мой класс контроллера правильно анализирует входные данные JSON (которые отправляются как необработанные POST и красные через php: // input ). Вопрос в том, как я могу манипулировать значением ввода php: // без запуска веб-сервера?

Ответы [ 3 ]

2 голосов
/ 05 декабря 2009

POST-данные - это все, что подается в стандартный ввод PHP, в зависимости от переменной среды CONTENT_LENGTH, сообщающей PHP, сколько байтов нужно прочитать (поэтому, чтобы изменить данные поста, вы просто передаете что-то другое)

GET-данные - это все, что находится в переменной среды QUERY_STRING.

См. это для других переменных среды, которые могут быть полезны для установки, которые используются PHP для заполнения таких вещей, как $ _SERVER

0 голосов
/ 05 декабря 2009

Как насчет перемещения функциональности чтения в класс (или даже замыкания, если вы работаете на PHP 5.3), а затем просто заменить его на фиктивный экземпляр при тестировании?

0 голосов
/ 05 декабря 2009

Я бы сказал, что вы недостаточно разобрались с проблемами; как я вижу, вы должны иметь:

  • один метод, который получает необработанные данные из ввода php: // и передает эти данные другому методу
  • второй метод, который получает строку и анализирует ее как JSON

Каждый из этих двух методов ответственен за одну и только одну вещь; таким образом, вы можете юнит -тест.

В вашем случае вы можете выполнить модульное тестирование поведения второго метода (того, который действительно работает) - независимо от того, откуда поступает входная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...