从另一个文件返回的JSON的PHPUnit测试

时间:2017-02-17 19:09:52

标签: php json phpunit

在我的网络服务器上我有一个PHP文件,它对数据库执行查询,然后返回我在Android应用程序中使用的JSON。

LoginUser.php     

require "conn.php";
header('Content-Type: application/json');

$json = file_get_contents('php://input', true);
$json = json_decode($json, TRUE);
$type = $json["type"];

$mail = $json['email'];
$pw= $json['password'];
$mysql_qry = "SELECT * FROM  utenti WHERE email like '$mail' and password like '$pw'";

$result = mysqli_query($conn, $mysql_qry);

if(mysqli_num_rows($result) > 0){
    $res['Result'] = "true";
    $res['Status'] = "Login OK";
    //do other stuf...
}else{
    $res['Result'] = "false";
    $res['Status'] = "Login FAILED";
}

echo json_encode($res);
return json_encode($res);

?>

现在我必须用PHPUnit编写一个单元测试来检查响应的格式是否正确。我尝试了不同的东西,现在我有这样的事情:

test.php的

<?php

use PHPUnit\Framework\TestCase;

final class TestLogin extends TestCase{

    public function testCorrectLogin(){

        $this->post(
            [mail => "prova@gmail.com", password=> "111"]
        )->seeStatusCode(200);

        include '/var/www/html/pizzino_php/loginU.php';
    }
}

?>

但它不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

那里有90%,PHP documentation状态返回包含(或必需)的文件中的值将返回一个值,就像它是一个函数一样。

  

此外,还可以从包含的文件中返回值。你可以采取   包含调用的值与正常函数的值相同。

<?php

use PHPUnit\Framework\TestCase;

final class TestLogin extends TestCase{

    public function testCorrectLogin(){

        $this->post(
            [mail => "prova@gmail.com", password=> "111"]
        )->seeStatusCode(200);

        $json = json_decode( include '/var/www/html/pizzino_php/loginU.php' );

        // Now do your checks on $json

    }
}

?>

如果您想阻止回显的字符串显示,可以在包含行之前和之后使用ob_start()ob_end_clean()