Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用phpunit测试验证表单?_Php_Unit Testing_Phpunit - Fatal编程技术网

如何使用phpunit测试验证表单?

如何使用phpunit测试验证表单?,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,在下面的代码中,反馈表单为3个字段(如姓名、电子邮件id和评论)输入信息。因此,验证需要使用phpunit测试进行测试。请帮忙。我对php语法一无所知。如何在phunit测试中断言和检查价值以给出报告 if($_POST){ //echo $sRc; //print "<pre>";print_r($_POST);exit; require_once(CLASSPATH."/utility.class.php"); $oUtility

在下面的代码中,反馈表单为3个字段(如姓名、电子邮件id和评论)输入信息。因此,验证需要使用phpunit测试进行测试。请帮忙。我对php语法一无所知。如何在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='';

         }

      } 
if($\u POST){
//echo$sRc;
//打印“”;打印($\u POST);退出;
require_once(CLASSPATH./utility.class.php”);
$oUtility=新的实用工具();
$sRc=base64_解码($_COOKIE['Rc_cf']);
$sEmail=trim($_POST['emailid']);
$scomment=trim($_POST['comment']);
$syour_name=trim($_POST['your_name']);
$sOthereSubject=修剪($_POST['subject']);
$sName=trim(strip_标签($oUtility->nonxmlcharreplace($_请求['your_name']));
$sEmail=trim(strip_标记($oUtility->nonxmlcharreplace($_请求['emailid']));
$sComments=trim(strip_标记($oUtility->nonxmlcharreplace($_请求['comment']));
$iError=0;
$sErrorMsg=“”;
如果(strlen($sName)==0){
$sErrorMsg=“您的姓名不能为空。”;
$iError=1;
}else if(strlen($sEmail)==0){
$sErrorMsg=“电子邮件地址不能为空。”;
$iError=1;
}else if(strlen($sEmail)>0){
$iValid=$oUtility->isValidEmail($sEmail);
如果($iValid!=1){
$sErrorMsg=“请输入有效的电子邮件地址。”;
$iError=1;
}      
}
if(空($sComments)&&strlen($sErrorMsg)==0){
$sErrorMsg=“注释不能为空。”;
$iError=1;
}
if(strlen($sErrorMsg)==0){
require_once(CLASSPATH.“feedback.class.php”);
$oFeedback=新反馈();
如果($iError==0){
$aParameters=Array('name'=>$sName,'email'=>$sEmail,'comments'=>$sComments,'cdate'=>'now()','is_active'=>1,'cdate'=>'now()','udate'=>'now()');
$iRes=$oFeedback->addUpdFeedback($a参数);
$sInserMsg=1;
$sEmail=$sName=$scomment='';
}
} 

您的方法应该很难测试,因为它太长。要构建测试,您必须遵循三个步骤:

  • 设置上下文(此处定义一些输入数据)
  • 执行函数(这里是一个中间有if语句的大函数)
  • 断言预期的行为发生了(在这里,验证失败或通过,以及在大函数中发生的其他事情)
  • 单元测试的目标是测试小事情,单元事情。因此,在您的情况下,编写测试非常困难,因为很难在测试上下文中定义不同的输入$\u POST。这也很困难,因为您的函数做了很多不同的事情

    所以你必须把你的大函数分成小函数,然后一个接一个地测试这些函数

    例如,类似这样的情况:

    public static function validation($input)
    {
        //Your validation here, return an array of error messages
    }
    
    //

    然后,您只需编写如下somme测试用例:


    您的其他功能将在其他测试用例中进行测试。小方法是可测试性、可读性和可维护性的关键。

    您的方法应该很难测试,因为它太长。要构建测试,您必须遵循三个步骤:

  • 设置上下文(此处定义一些输入数据)
  • 执行函数(这里是一个中间有if语句的大函数)
  • 断言预期的行为发生了(在这里,验证失败或通过,以及在大函数中发生的其他事情)
  • 单元测试的目标是测试小事情,单元事情。因此,在您的情况下,编写测试非常困难,因为很难在测试上下文中定义不同的输入$\u POST。这也很困难,因为您的函数做了很多不同的事情

    所以你必须把你的大函数分成小函数,然后一个接一个地测试这些函数

    例如,类似这样的情况:

    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);
    }