如何制作一个依赖〜实际~POST / GET数据的PHPUnit测试?

前端之家收集整理的这篇文章主要介绍了如何制作一个依赖〜实际~POST / GET数据的PHPUnit测试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个包含filter_input函数PHP类,以使我们的开发人员的生活更轻松.
要使用url,name和age字段验证HTML表单,代码将是这样的:
$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测试.

问题是我不知道如何伪造PHPUnit方法上的GET / POST数据,而不是这种情况.
我不需要在$_POST中插入值,我需要“真实”数据,因为filter_input可以处理脚本收到的数据,而不是实际的$_POST超全局数据.

我尝试使用以下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
(对不起葡萄牙语,我知道用英语编码会更好,但这就是我工作的地方.如果你真的认为它真的需要,我可以翻译代码).

我有什么想法来测试这个课程吗?

你不能伪造原始的POST数据.但问题在于你的代码:它不是单元可测试的.代替:
if (filter_input(INPUT_POST,FILTER_SANITIZE_URL);
}

如果你有:

if (filter_var($data['name'],FILTER_UNSAFE_RAW) && filter_var($data['age'],FILTER_VALIDATE_INT)) {
    $url = filter_var($data['url'],FILTER_SANITIZE_URL);
}
// where $data is a copy of $_POST in that case

将您的代码单元渲染为可测试的,并且与您之前的代码相同.

P.S.:FILTER_VALIDATE_INTEGER无效.适当的常量是FILTER_VALIDATE_INT

原文链接:https://www.f2er.com/javaschema/281495.html

猜你在找的设计模式相关文章