2016-08-16 3 views
0

Je voulais tester une fonction Api, mais la méthode Post envoie null comme arguments. Voici mon codePHPUnit Post Méthode envoi null en tant que paramètres

public function testPOST() { 
    require 'vendor/autoload.php'; 

    // create our http client (Guzzle) 
    $client = new \GuzzleHttp\Client(); 

    $data = array("MobileNumber" => "923024175176", "Type" => "mobile no validation"); 
    $url = 'http://192.168.8.101/ren-money/index.php/OTP/generateOTPbyType'; 

    $response = $client -> post($url, $data); 
    echo $response -> getBody(); 
    $this -> assertEquals(1, (int)$result["StatusCode"]); 
} 

Je veux accéder au code d'état envoyer à un client par la fonction, mais je reçois { « Erreur »: « Trop peu ou mal Arguments »} au lieu, il me montre que api fonction est d'envoyer ce à moi à cause de paramètres nuls .. Voici la fonction Api

public function generateOTPbyType_post() { 
    //getting number from post 
    $Number = $this -> post("MobileNumber"); 
    //getting type from post 
    $Type = strtolower($this -> post("Type")); 

    //Generating 6 digit Random number 
    $Pin = random_string('numeric', 6); 

    //checking weather all/requied parametters are provided correctly 
    if ($Number === NULL || $Type === NULL) { 
     $this -> response(array("StatusCode" => "2", "Description" => "Too few or wrong Arguments")); 
     //return 2; 
    } 

    //infoBip SDK code for sending pin to user 
    $Client = new infobip\api\client\SendSingleTextualSms(new infobip\api\configuration\BasicAuthConfiguration("husnainMalik", "BlueRose")); 
    $RequestBody = new infobip\api\model\sms\mt\send\textual\SMSTextualRequest(); 
    $RequestBody -> setFrom("InfoSMS"); 
    $RequestBody -> setTo($Number); 

    //checking type 
    if ($Type === 'mobile no validation' || $Type === 'goods delivery' || $Type === 'goods receipt') { 
     $DbObj = array("number" => $Number, "key" => $Pin, "time" => (int)time(), "status" => "0", "type" => strtolower($Type)); 
     //checking DB error and saving into DB 
     if ($this -> OTP_Model -> saveOTP($DbObj) === FALSE) { 
      $this -> response(array("StatusCode" => "2", "Description" => "Internal Db Error")); 
      //return 2; 
     } 

     //infoBip SDK setting parametters 
     $RequestBody -> setText("Your " . strtolower($Type) . " code: " . $Pin); 
     $Response = json_decode(json_encode($Client -> execute($RequestBody))); 
     $GrpName = $Response -> messages[0] -> status -> groupName; 
     $Discription = $Response -> messages[0] -> status -> description; 
     //InfoBip error handling 
     if ("REJECTED" === $GrpName) { 
      $this -> response(array("StatusCode" => "2", "Description" => $Discription)); 
      //return 2; 
     } else { 
      $this -> response(array("StatusCode" => "1", "Description" => $Discription)); 
      //return 1; 
     } 

    } else { 
     $this -> response(array("StatusCode" => "2", "Description" => "Invalid Type")); 
     //return 2; 
    } 

} 

S'il vous plaît donner un look, tout le monde

Répondre

0

dans testPOST() vous essayez d'accéder à la variable $result qui n'est pas défini dans votre code. Vous devez décoder le corps de la réponse. Si l'utilisation du serveur JSON vous pouvez essayer ceci:

$response = $client->post($url, $data); 
$result = json_decode($response->getBody()); 
$this->assertEquals(1, intval($result["StatusCode"])); 

Il serait intéressant de voir le code de la méthode response().

+0

J'ai mis à jour le code, mais il ne fonctionne toujours pas, donnant la même erreur, car le POST passe null comme paramètres ... –