php,mysql Db与单元测试

时间:2011-10-21 09:19:29

标签: php

我在登录页面有一个类用于检查用户,这里我如何实现单元测试? 这是我的登录页面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();

帮帮我, 提前谢谢。

1 个答案:

答案 0 :(得分:2)

你试过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,而不必担心模拟请求。