如何使用Model类的mockry单元测试代码

时间:2016-09-14 16:07:30

标签: php unit-testing mocking phpunit

我想用phpunit编写测试用例,用于以下模型功能。我是单位测试的初学者,请告诉我。

public function checkUserEmailExist($email)
{

    $query = \registry::getDBHandler()->prepare("SELECT email FROM users WHERE email = :EMAIL");
    $query->bindValue(":EMAIL", $email);

    try{
        $query->execute();
        $result = ($query->fetchColumn());
    } catch(PDOException $e) {
        \debug::error('MySQL errno ' . $e->getCode() . ': "' . $e->getMessage() . '" when executing: ' . $query->queryString);
    }

    return $result;
}

1 个答案:

答案 0 :(得分:0)

首先,您需要使用一些测试数据为数据库测试准备测试平台。您可以按照本教程执行此操作:

https://phpunit.de/manual/current/en/database.html

然后你可以写你的测试。假设您的checkUserEmailExist方法位于名为Authentication的类中。然后你的测试将如下所示:

<?php
class authenticationTest extends PHPUnit_Extensions_Database_TestCase
{
    /**
     * @test
     */
    public function testCheckUserEmailExist ()
    {
        $actual = 'dummyemail@testdatabase.com';
        $auth = new Authentication();
        $expected= $auth->checkUserEmailExist($actual);
        $this->assertEquals($expected->email, $actual);
    }
}

您需要确保测试数据库的dummyemail@testdatabase.com表中存在users电子邮件。