Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用mockry为模型类修改单元测试代码_Php_Unit Testing_Mocking_Phpunit - Fatal编程技术网

Php 如何使用mockry为模型类修改单元测试代码

Php 如何使用mockry为模型类修改单元测试代码,php,unit-testing,mocking,phpunit,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{

我想使用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;
}

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

然后你就可以写你的测试了。假设您的
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);
    }
}

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

然后你就可以写你的测试了。假设您的
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);
    }
}

fetchColumn返回什么?对象还是数组?@user3360140:对象。它返回一个电子邮件地址,所以如果你喜欢echo$result->email,你应该得到这个电子邮件地址吗?对吗?请检查我的答案。为什么要在这种情况下使用mockry?fetchColumn返回什么?对象还是数组?@user3360140:对象。它返回一个电子邮件地址,所以如果你喜欢echo$result->email,你应该得到这个电子邮件地址吗?对吗?请检查我的答案。你为什么要在这个案子中使用嘲弄?