php, mysql数据库与单元测试


php, mysql Db with unittesting

我有一个类在登录页面检查用户,在这里我如何实现单元测试?这是我登录页面的php代码:

class login {
function checkuserlogin() {

      $username = $_REQUEST['username'];
      $pwd = $_REQUEST['pwd'];
    $result = mysql_query($selQry);
    $resultset = mysql_num_rows($result);
    while($row = mysql_fetch_array($result))
      {
            if(($row['username']==$username && $row['password']==$password )|| ($row['email'] == $username && $row['password']==$password)) {
              do.. codes
            }
            else {
                                do.. codes
            }
          } 
   }

}

$login = new login();
$login->checkuserlogin();

帮助我,

你试过phpUnit吗?http://www.phpunit.de/manual/current/en/

对数据库测试有一定的支持

您可以通过重构类并将授权代码移动到方法中来测试类,如下所示:

class login {
    function checkuserlogin() {
        if (isUserAuthorized($_REQUEST['username'], $_REQUEST['pwd']) {
           do...codes
        } else {
           do...codes
        }
    }
    function isUserAuthorized($username, $pwd) {
        $result = mysql_query($selQry);
        $resultset = mysql_num_rows($result);
        while($row = mysql_fetch_array($result)) {
            if(($row['username']==$username && $row['password']==$pwd )|| ($row['email'] == $username && $row['password']==$pwd)) {
                return true;
            }
        }
        return false;
      } 
}

,然后单独测试isUserAuthorized,而不用担心mock请求。