加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 20:11:49 所属栏目:百科 来源:网络整理
导读:我创建了一个包含filter_input函数的 PHP类,以使我们的开发人员的生活更轻松. 要使用url,name和age字段验证HTML表单,代码将是这样的: $post = Filter::POST();if ($post-validate_string('name') $post-validate_integer('age')) { $url = $post-sanitize_u
我创建了一个包含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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读