私が取り組んでいるスクールプロジェクトにPHPUnitテスト関数を記述しようとしています。この機能は通常のWebサイトで正常に機能します。しかし、私がPHPUnitでデータベース関連の操作をテストしようとすると、私はmysqli_query(): Couldn't fetch mysqli
を得ています。mysqli_query():PHPUnitでPHP関数をテスト中にmysqliを取得できませんでした
PHPUnitのファイル:test.phpを
function testFindById() {
$expected_object = "Artist";
$result = Artist::find_by_id($id);
$result_type = gettype($result);
$this->assertEquals($expected_object, $result_type);
}
DatabaseHelperクラス:DatabaseHelper.php
public static function find_by_sql($sql) {
global $database;
$result = $database->query($sql);
$objects = array();
if ($result) {
while ($row = mysqli_fetch_array($result)) {
$objects[] = static::new_instance($row);
}
}
return $objects;
}
public static function find_by_id($id) {
global $database;
$sql = "SELECT * FROM " . static::$table_name . " WHERE id = $id LIMIT 1";
$result = static::find_by_sql($sql);
if (!empty($result)) {
return array_shift($result);
} else {
return false;
}
}
アーティストクラス:ここ
は、サンプルコードスニペットですArtist.php
class Artist extends DatabaseHelper {
protected static table_name = "artists";
// more irrelevant code follows
}
テスト出力
C:\Xampp\htdocs\musicstore-oop-beta\test>phpunit --verbose MusicStoreTest.php
PHPUnit 3.7.21 by Sebastian Bergmann.
SSE
Time: 0 seconds, Memory: 2.00Mb
There was 1 error:
1) MusicStoreTest::testFindById
mysqli_query(): Couldn't fetch mysqli
C:\Xampp\htdocs\musicstore-oop-beta\app\Database.php:38
C:\Xampp\htdocs\musicstore-oop-beta\app\DatabaseHelper.php:23
C:\Xampp\htdocs\musicstore-oop-beta\app\DatabaseHelper.php:37
C:\Xampp\htdocs\musicstore-oop-beta\test\MusicStoreTest.php:62
There were 2 skipped tests:
1) MusicStoreTest::testAddArtist
Artist Add Test Skipped
C:\Xampp\htdocs\musicstore-oop-beta\test\MusicStoreTest.php:24
2) MusicStoreTest::testAddAlbum
Album Add Test Skipped
C:\Xampp\htdocs\musicstore-oop-beta\test\MusicStoreTest.php:40
FAILURES!
Tests: 3, Assertions: 0, Errors: 1, Skipped: 2.
テストのような音が適切に設定されていません。データベース接続はテストセットアップ内で利用可能ですか? – hakre