无法用 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