Я создал класс PHP, который включает в себя функции filter_input, чтобы упростить жизнь разработчика.
Чтобы проверить HTML-форму с полями url
, name
и age
, код будет таким:
$post = Filter::POST();
if ($post->validate_string('name') && $post->validate_integer('age')) {
$url = $post->sanitize_url('url');
}
Это было бы так же, как:
if (filter_input(INPUT_POST,'name',FILTER_UNSAFE_RAW) && filter_input(INPUT_POST,'age',FILTER_VALIDATE_INTEGER)) {
$url = filter_input(INPUT_POST,'url',FILTER_SANITIZE_URL);
}
Что ж, я думаю, что код готов, и теперь я хотел бы создать для него тест PHPUnit.
Проблема в том, что я понятия не имею, как подделать данные GET/POST в методе PHPUnit, не для этого случая.
Мне не нужно вставлять значения в $_POST
, мне нужны "настоящие" данные, потому что filter_input
работает с данными, полученными сценарием, а не с фактическим $_POST
superglobal.
Я пытался использовать следующий тест PHPT и метод PHPUnit для достижения этого, но безуспешно:
--TEST--
Generates POST and GET data to be used in FilterTest.php
--POST--
name=Igor&age=20
--GET--
name=Igor&age=19
--FILE--
<?php
echo $_POST['nome'].' = '.$_POST['idade'];
?>
--EXPECT--
Igor = 20
public function testPhpt() {
$phpt = new PHPUnit_Extensions_PhptTestCase('FilterTest_data.phpt', array('cgi' => 'php-cgi'));
$result = $phpt->run();
$this->assertTrue($result->wasSuccessful());
}
РЕДАКТИРОВАТЬ
Исходный код: http://pastebin.com/fpw2fpxM
Код, используемый для первоначального тестирования: http://pastebin.com/vzxsBQWm
(извините за португальский, я знаю, что было бы лучше кодировать на английском языке, но здесь, где я работаю, все работает именно так. Если вы действительно считаете, что это действительно необходимо, я могу перевести код).
Любая идея о том, что я могу сделать, чтобы проверить этот класс?