【问题标题】:PDO Extension on Laravel unit testingLaravel 单元测试的 PDO 扩展
【发布时间】:2019-08-18 20:16:00
【问题描述】:

我一直在为我的 Laravel 应用程序设置单元测试而苦苦挣扎,我遇到了错误……它说 PDO 扩展未安装,并给我错误“找不到 PDOException 驱动程序”但它已安装!! !.当我为我的应用程序提供服务时,一切正常!!!

PDO 也已安装:

  28 => "json"
  29 => "exif"
  30 => "mysqli"
  31 => "pdo_mysql"
  32 => "pdo_sqlite"
  33 => "Phar"
  34 => "posix"
  35 => "readline"
  36 => "shmop"

这是我的测试代码:

<?php

namespace Tests\Unit;

use App\Models\User\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        factory(User::class)->create();
        $this->assertTrue(true);
    }
}

错误跟踪:

 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Connection.php:624
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Connection.php:459
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Connection.php:411
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php:32
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2653
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:1347
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:835
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:800
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:663
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:206
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Support/Collection.php:419
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:207
 /home/soheil/Documents/Projects/PHP/EcollegeMe/vendor/laravel/framework/src/Illuminate/Database/Eloquent/FactoryBuilder.php:181
 /home/soheil/Documents/Projects/PHP/EcollegeMe/tests/Unit/ExampleTest.php:18

 Caused by
 PDOException: could not find driver


【问题讨论】:

  • 如何运行测试?
  • 我正在用 phpstorm 运行我的测试!当我运行./vendor/bin/phpunit 命令时一切正常
  • 在你的单元测试中加入一些 phpinfo 调用并运行它。我认为,它使用了错误的版本

标签: php laravel unit-testing testing


【解决方案1】:

检查您是否在 cli 上启用了 pdo 扩展,您可以通过在终端上运行 php -m 来执行此操作。

确保在 cli 和 fpm 模式下加载 pdo 扩展

编辑:您可以通过运行php -i 从命令行检查使用了哪个配置文件

【讨论】:

  • 换句话说,您的意思是可能有一个单独的php.ini 文件。 (通常命名为php-cli.ini) - 这是我知道的,但在你的回答中并不完全清楚。在任何情况下,cli.ini 甚至可能没有启用 PDO……所以,这也是我的猜测。 (由于时区设置,这是我学到的东西,很难……哈哈)
  • 不是缺少PDO扩展,而是缺少mysql或者sqlite扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 2020-07-12
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
相关资源
最近更新 更多