在下面的代码中,反馈表单为3个字段输入内容,例如姓名,电子邮件ID和电子邮件。评论。因此需要使用phpunit测试来验证验证。请帮忙。我是php语法的新手。如何断言&检查valdiation以报告phunit测试。
if($_POST){
//echo $sRc;
//print "<pre>";print_r($_POST);exit;
require_once(CLASSPATH."/utility.class.php");
$oUtility = new utility();
$sRc = base64_decode($_COOKIE['Rc_cf']);
$sEmail = trim($_POST['emailid']);
$scomment = trim($_POST['comment']);
$syour_name = trim($_POST['your_name']);
$sOthereSubject = trim($_POST['subject']);
$sName = trim(strip_tags($oUtility->nonxmlcharreplace($_REQUEST['your_name'])));
$sEmail = trim(strip_tags($oUtility->nonxmlcharreplace($_REQUEST['emailid'])));
$sComments = trim(strip_tags($oUtility->nonxmlcharreplace($_REQUEST['comment'])));
$iError=0;
$sErrorMsg="";
if(strlen($sName)==0){
$sErrorMsg="Your name cannot be blank.";
$iError=1;
} else if(strlen($sEmail)==0){
$sErrorMsg="Email address cannot be blank.";
$iError=1;
}else if(strlen($sEmail)>0){
$iValid = $oUtility->isValidEmail($sEmail);
if($iValid!=1){
$sErrorMsg="Please enter valid email address.";
$iError=1;
}
}
if(empty($sComments) && strlen($sErrorMsg)==0){
$sErrorMsg="Comment cannot be blank.";
$iError=1;
}
if(strlen($sErrorMsg)==0){
require_once(CLASSPATH."feedback.class.php");
$oFeedback = new feedback();
if($iError==0){
$aParameters=Array('name'=>$sName,'email'=>$sEmail,'comments'=>$sComments,'cdate'=>'now()', 'is_active'=>1,'cdate'=>'now()','udate'=>'now()');
$iRes = $oFeedback->addUpdFeedback($aParameters);
$sInserMsg = 1;
$sEmail = $sName = $scomment='';
}
}
答案 0 :(得分:0)
你的方法应该很难测试,因为它太长了。要构建测试,您必须遵循以下三个步骤:
单元测试的目标是测试小事,单元事情。因此,在您的情况下,编写测试非常困难,因为在测试上下文中很难定义不同的输入$_POST
。这也很难,因为你的功能做了很多不同的事情。
所以你必须将你的大功能切换成较小的功能,然后逐个测试这个功能。
例如,类似的东西:
$errorsArray = $this->validation($_POST);
if (count($errorsArray) == 0) {
require_once(CLASSPATH."feedback.class.php");
$oFeedback = new feedback();
$aParameters=Array('name'=>$sName,'email'=>$sEmail,'comments'=>$sComments,'cdate'=>'now()', 'is_active'=>1,'cdate'=>'now()','udate'=>'now()');
$iRes = $oFeedback->addUpdFeedback($aParameters);
$sInserMsg = 1;
$sEmail = $sName = $
}
//
public static function validation($input)
{
//Your validation here, return an array of error messages
}
然后,你将只需编写像这样的somme测试用例:
public function testValidationOk()
{
$input = array('name' => 'John', 'email' => 'john@gmail.com');
$errorsArray = MyClass::validation($input);
assertCount(0, $errorsArray);
}
public function testValidationFailWithoutName()
{
$input = array('name' => '', 'email' => 'john@gmail.com');
$errorsArray = MyClass::validation($input);
assertCount(1, $errorsArray);
}
public function testValidationFailWithInvalidEmail()
{
$input = array('name' => 'John', 'email' => 'john.com');
$errorsArray = MyClass::validation($input);
assertCount(1, $errorsArray);
}
您的其余功能将在其他测试案例中进行测试。小方法是可测试性,可读性和可维护性的关键。