- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当运行 PHPUnit 时,它给了我这个错误,在所有 5 个测试中,任何帮助将不胜感激。这是我第一次用 PHP 构建任何东西,我知道我还有很长的路要走。
Use of undefined constant MYSQLI_OPT_CONNECT_TIMEOUT - assumed 'MYSQLI_OPT_CONNECT_TIMEOUT' in all 5 tests.
At locations:
mysql_connector.php:70 menu_controller.php:60
mysql_connector.php:74 menu_controller.php:60
mysql_connector.php:55 menu_controller.php:46
mysql_connector.php:94 menu_controller.php:75
mysql_connector.php:111 menu_controller.php:86
这是 MySql 连接器:
<?php
/**
* Class for creating, reading, and modifying the database.
*/
class Sql {
/**
* @var SELECT_ALL selects from database table.
*/
const SELECT_ALL = 'SELECT * FROM';
/**
* Database constructor.
* @param $user
* @param $pass
* @param $dbName
* return void
*/
function __construct( $user, $pass, $dbName ) {
require_once 'meekrodb.2.3.class.php';
$this->user = $user;
$this->pass = $pass;
$this->dbName = $dbName;
}
/**
* Seaches database for user by id.
* @param $databaseName
* @param $field
* @param $value
* @return string
*/
public function readByID( $databaseName, $field, $value ) {
\DB::$user = $this->user;
\DB::$password = $this->pass;
\DB::$dbName = $this->dbName;
$results = \DB::query( self::SELECT_ALL . $databaseName . 'WHERE' . $field . '=' . $value );
return $results;
}
/**
* Displays all users within the database.
* @param $databaseName
* @return string
*/
public function readDb( $databaseName ) {
\DB::$user = $this->user;
\DB::$password = $this->pass;
\DB::$dbName = $this->dbName;
$results = \DB::query( self::SELECT_ALL . $databaseName );
return $results;
}
/**
* Creates a new user in the database.
* @param $databaseName
* @param $firstName
* @param $lastName
* @param $email
* @param $password
* @return string
*/
public function create( $databaseName, $firstName, $lastName, $email, $password ) {
\DB::$user = $this->user;
\DB::$password = $this->pass;
\DB::$dbName = $this->dbName;
$results = \DB::query( 'INSERT INTO' . $databaseName . "( firstName, lastName, email, password ) VALUES ('" . $firstName . "', '" . $lastName . "', '" . $email . "', '" . $password . "' );" );
return \DB::insertId();
}
/**
* Updates a user within the database.
* @param $databaseName
* @param %id
* @param $firstName
* @param $lastName
* @param $email
* @param $password
* @return string
*/
public function update( $databaseName, $id, $firstName, $lastName, $email, $password ) {
\DB::$user = $this->user;
\DB::$password = $this->pass;
\DB::$dbName = $this->dbName;
$results = \DB::query('UPDATE' . $databaseName . "' SET firstName = '" . $firstName . "', lastName = '" . $lastName . "', email = '" . $email . "', password = '" . $password . "' WHERE Users.id = '" . $id . "';'");
return $results;
}
/**
* Deletes a user from the database.
* @param $databaseName
* @param $field
* @param $value
* @return string
*/
public function delete( $databaseName, $field, $value ) {
\DB::$user = $this->user;
\DB::$password = $this->pass;
\DB::$dbName = $this->dbName;
$results = \DB::query('DELETE FROM' . $databaseName . 'WHERE' . $field . '=' . $value);
return $results;
}
}
?>
这是 Controller :
<?php
require_once dirname(__FILE__) . '/../models/user.php';
require_once dirname(__FILE__) . '/../mysql_connector.php';
/**
* Controller for functionality of menu
**/
class MenuController {
/**
* @var $db = database
**/
private $db;
/**
* @var TABLE = user table name.
**/
const TABLE = 'users';
/**
* Constructs database connector
* @param none
* return void
**/
public function __construct() {
$this->db = new Sql('my_database', 'password', 'my_database');
}
/**
* displays the user by id.
* @param array $args
* @return array
*/
public function displayUserById(array $args = array()) {
$id = $args[0];
return json_encode($this->db->readByID( self::TABLE, 'id', $id));
}
/**
* displays the database.
* @param none
* @return void
*/
public function view() {
return json_encode( $this->db->readDb( self::TABLE ));
}
/**
* Creates a new user.
* @param array $args
* @return array
*/
public function create(array $args = array()) {
$firstName = $args[0];
$lastName = $args[1];
$email = $args[2];
$password = $args[3];
return $this->db->create( self::TABLE, $firstName, $lastName, $email, $password);
}
/**
* Updates users within the database.
* @param array $args
* @return array
*/
public function update(array $args = array()) {
$id = $args[0];
$firstName = $args[1];
$lastName = $args[2];
$email = $args[3];
$password = $args[4];
return json_encode( $this->db->update( self::TABLE, $id, $firstName, $lastName, $email, $password));
}
/**
* Deletes a user within the database.
* @param array $args
* @return array
*/
public function delete(array $args = array()) {
$id = $args[0];
return json_encode($this->db->delete( self::TABLE, 'id', $id));
}
}
?>
我的测试文件夹:
<?php
require_once dirname(__FILE__) . '/../controllers/menu_controller.php';
use PHPUnit\Framework\TestCase;
/**
* Extends PHPUnit giving access to the program, which allows for testing.
*/
class DatabaseTest extends TestCase {
/**
* Test to display if user was created.
* @param none
* @return true if user was created.
* @test
*/
public function testUserCreated() {
$control = new MenuController();
$results = json_decode( $control->create(['Jane', 'Doe', 'janedoe@gmail.com', 'password']));
$this->assertTrue( $results > 0 );
}
/**
* Test to display single user by id.
* @param none
* @return true if id was found.
* @test
*/
public function testShowUser() {
$control = new MenuController();
$newId = $control->create(['Jane', 'Doe', 'janedoe@gmail.com', 'password']);
$results = json_decode( $control->displayUserById([$newId]))[0];
$this->assertEquals($results->firstName, 'Jane');
}
/**
* Test to display all user in the database.
* @param none
* @return true if users are displayed.
* @test
*/
public function testShowAllUsers() {
$control = new MenuController();
$results = $control->view();
$items = json_decode( $results );
$this->assertTrue(sizeof( $items ) > 1 );
}
/**
* Test to update data of a user within the database.
* @param none
* @return true if user is updated.
* @test
*/
public function testUserUpdated() {
$control = new MenuController();
$results = json_decode($control->update([0, 'Jane', 'Doe', 'janedoe@gmail.com', 'password' ]));
$this->assertTrue($results, "true");
}
/**
* Test if user was deleted from the database.
* @param none
* @return true if user was deleted.
* @test
*/
public function testUserDeleted() {
$control = new MenuController();
$results = json_decode($control->delete([0]));
$this->assertTrue($results, "true");
}
}
?>
最佳答案
我怀疑这是由您使用的框架引起的。常数本身是 predefined by PHP's MySQLi-driver 。您可以查看框架的手册,如果他们建议设置数据库驱动程序的配置以使该警告消失。另一种方法是在测试设置中设置您认为合理的超时:
<?php
require_once dirname(__FILE__) . '/../controllers/menu_controller.php';
use PHPUnit\Framework\TestCase;
/**
* Extends PHPUnit giving access to the program, which allows for testing.
*/
class DatabaseTest extends TestCase {
public function setUp() {
parent::setUp();
if (!defined('MYSQLI_OPT_CONNECT_TIMEOUT')) {
define('MYSQLI_OPT_CONNECT_TIMEOUT', 3);
}
}
// ... your tests ...
关于使用 MVC 框架的 PHP 数据库在运行 PHPUnit 测试后收到错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814746/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!