database - 函数之间的共享连接

标签 database testing mysqli connection phpunit

我有一个关于共享连接的问题。我已经尝试了好几个星期来解决这个问题,并尝试了很多不同的东西,比如 PDO 连接、getConnetion 等等。但我仍然无法正常工作。我想要做的是创建一个到我的数据库的连接 ONCE 然后不必再次声明它。在 PHPUnit 中,有我熟悉的 setUp 和 tearDown 函数。基本上我想在 setUp 中声明数据库连接,这样在每次测试之前都会有一个到数据库的连接,这是执行单元测试所需要的。目前,我被迫在每个函数中声明一个到数据库的新连接以使其工作。否则我会收到错误消息,指出我在每个函数中都有一个“ undefined variable $mysqli”,或者它可能会说“调用非对象上的成员函数 query()”。这是我的代码:

<?php

include 'functions.php';

class Test extends PHPUnit_Framework_TestCase {

protected function setUp(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');

public function testCheckbrute(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');

$LessThanFive = checkbrute('200', $mysqli);
$this->assertFalse($LessThanFive);

$FiveFailedLogins = checkbrute('201', $mysqli);
$this->assertTrue($FiveFailedLogins);
}

public function testLogin(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');
$AccountIsLockedFalse = Login("xxxx","xxxx", $mysqli);
$this->assertFalse($AccountIsLockedFalse);

$NoUserExists = Login("xxxx","xxxxx", $mysqli);
$this->assertFalse($NoUserExists);
}

protected function tearDown(){
$mysqli = new mysqli('localhost', 'usrname', 'password', 'db'); 
$mysqli->query("DELETE FROM login_attempts WHERE user_id IN (200, 201)");
$mysqli->query("DELETE FROM members WHERE id IN (200, 201)");
}
}
?>

有不需要太多重构或时间的具体简单解决方案吗?这是我不想在每个函数中继续编写的代码片段:

$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');

最佳答案

尝试在 setUp() 函数中使用 global 关键字。像这样:

global $mysqli;

然后您可以使用:

$mysqli = new mysqli('localhost', 'usrname', 'password', 'db');

作为全局变量。

关于database - 函数之间的共享连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777249/

相关文章:

mysql - 根据条件连接两个表以及第二个表中的记录数

unit-testing - Spring MVC 4.2 : How to Unit Test Controller with @RequestPart Params

sql-server - 数据库再次受到源代码控制!

python - 编写仅测试函数是否被调用的单元测试有意义吗?

php - MySQLi 查询结果 : When do I close, 免费,还是两者兼而有之?

PHP/MySQL 大插入

database - ms access 中插入查询的持续时间

database - 使用 selenium 在 capybara 中创建动态记录不起作用

php - 将数据插入MYSQL表时出错

c# - int 的格式不正确