无法用 php 单元测试 eloquent
can't test eloquent with php unit
我尝试在使用 Eloquent 的项目上使用 phpUnit 实施一些单元测试。安装是使用 composer 为两个框架进行的。但是当我尝试实现一个简单的示例测试时,加载失败 database.php
实例测试
include("database.php");
class ArticleControllerTest extends TestCase
{
public function testAccueil()
{
//récupère la date du jour
$a = \app\model\Article::first();
$this->assertInternalType("string", $a->titreGeneral);
}
}
Database.php
<?php
require 'vendor/autoload.php';
use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'spectacles',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => ''
));
$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->setAsGlobal();
$capsule->bootEloquent();
这些脚本的错误消息(数据库在正确的文件夹中)
PHP Warning: include(../../database.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
Warning: include(../../database.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
PHP Warning: include(): Failed opening '../../database.php' for inclusion (include_path='.:') in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
Warning: include(): Failed opening '../../database.php' for inclusion (include_path='.:') in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
当我尝试在示例测试中直接将代码放入 database.php 时出现错误消息:
PDOException: SQLSTATE[HY000] [2002] No such file or directory
我不认为问题出在路径上(它们是正确的路径)。我错过了什么吗?
PDOException: SQLSTATE[HY000] [2002] No such file or directory
表示数据库无法连接。
其他错误清楚地告诉您脚本无法包含 database.php
文件。
路径不正确。您没有正确理解 include()
的工作原理。阅读 http://php.net/manual/en/function.include.php.
简而言之,以下代码期望 database.php
文件与文件本身存在于同一目录中,或者位于包含路径中。
include("database.php");
class ArticleControllerTest extends TestCase
{
...
这些也可能有帮助:
- Understanding include_path output PHP
- Include Config and Database from other files
我尝试在使用 Eloquent 的项目上使用 phpUnit 实施一些单元测试。安装是使用 composer 为两个框架进行的。但是当我尝试实现一个简单的示例测试时,加载失败 database.php
实例测试
include("database.php");
class ArticleControllerTest extends TestCase
{
public function testAccueil()
{
//récupère la date du jour
$a = \app\model\Article::first();
$this->assertInternalType("string", $a->titreGeneral);
}
}
Database.php
<?php
require 'vendor/autoload.php';
use Illuminate\Container\Container;
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Events\Dispatcher;
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'spectacles',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => ''
));
$capsule->setEventDispatcher(new Dispatcher(new Container));
$capsule->setAsGlobal();
$capsule->bootEloquent();
这些脚本的错误消息(数据库在正确的文件夹中)
PHP Warning: include(../../database.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
Warning: include(../../database.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
PHP Warning: include(): Failed opening '../../database.php' for inclusion (include_path='.:') in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
Warning: include(): Failed opening '../../database.php' for inclusion (include_path='.:') in /Applications/MAMP/htdocs/spectacles/TestUnits/controllerTest/ArticleControllerTest.php on line 6
当我尝试在示例测试中直接将代码放入 database.php 时出现错误消息:
PDOException: SQLSTATE[HY000] [2002] No such file or directory
我不认为问题出在路径上(它们是正确的路径)。我错过了什么吗?
PDOException: SQLSTATE[HY000] [2002] No such file or directory
表示数据库无法连接。
其他错误清楚地告诉您脚本无法包含 database.php
文件。
路径不正确。您没有正确理解 include()
的工作原理。阅读 http://php.net/manual/en/function.include.php.
简而言之,以下代码期望 database.php
文件与文件本身存在于同一目录中,或者位于包含路径中。
include("database.php");
class ArticleControllerTest extends TestCase
{
...
这些也可能有帮助:
- Understanding include_path output PHP
- Include Config and Database from other files