Php 如何使用mockry为模型类修改单元测试代码
我想使用phpunit为以下模型函数编写测试用例。我是单元测试的初学者,请给我一些建议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{
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,你应该得到这个电子邮件地址吗?对吗?请检查我的答案。你为什么要在这个案子中使用嘲弄?