phpunit测试????如何与api函数调用之前和之后的xml文件进行比较(该函数包含存储过程)

时间:2014-01-28 09:11:35

标签: php mysql phpunit dbunit simpletest

经过很长一段时间的搜索得到这篇伟大的文章真的非常好 但我在我的东西面临一点问题,因为你在api中使用了直接的mysql查询我在这里使用了存储过程,每次我必须比较前后两个XML,即使是一个短而甜的查询,所以有这个过程的任何替代方案,但这是安全的 请你知道这个你会更清楚

database testing in php using phpunit,simpletest on api haveing stored procedure

或者如何与api函数调用之前和之后的xml文件进行比较(该函数包含存储过程) 意味着我能够使用mysql-dump获得之前的状态,但之后却没有获得xml状态之后的瞬间

对不起英语,但我尽力了 感谢帮助朋友

必须为api函数编写单元测试测试

public function delete($userId)
    {
          // this function calls a stored procedure
               $sql = "CALL Delete_User_Details(:userId)";
                try {
                        $db = parent::getConnection();
                        $stmt = $db->prepare($sql);
                        $stmt->bindParam("userId", $userId);
                        $stmt->execute();
                        $id = $stmt->fetchObject();
                        if ($id == null) {
                        $delete_response->createJSONArray("DATABASE_ERROR",0);
                        } else {
                        $delete_response->createJSONArray("SUCCESS",1);
                        }
                } catch (PDOException $e) {
                    $delete_response->createJSONArray("DATABASE_ERROR",0);
                }
       return $delete_response->toJSON();
    }

我已经写了这个单元测试,现在想为它写一个dbunit

 public function testDeleteUser()
 {
            $decodedResponse = $response->json();
            $this->assertEquals($response->getStatusCode(), 200);
            $this->assertEquals($decodedResponse['status']['StatusMSG'], 'SUCCESS');
            $this->assertEquals($decodedResponse['status']['Code'], '1');
 }

帮助伙伴

1 个答案:

答案 0 :(得分:0)

你可以通过调用像

这样的查询来简单地测试它
  $sql = "select * from user";

并将其与BeforeDeleteUser.xml进行比较

Call Ur存储过程

   $sql = "CALL Delete_User_Details(:userId)";

对于后案例,只需重复前一次

  $sql = "select * from user";

并将其与AfterDeleteUser.xml进行比较

如果您在BeforeDeleteUser.xml中有5个用户并且结果为true并且在调用CALL Delete_User_Details(:userId)存储过程之后,看到逻辑非常简单,则AfterDeleteUser.xml应该只包含4个用户(或者可能包含idDelete字段)为0取决于你的实施)