php - Laravel 单元测试上的 PDO 扩展

标签 php laravel unit-testing testing

我一直在为我的 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


最佳答案

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

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

编辑:您可以通过运行 php -i

检查从命令行使用的配置文件

关于php - Laravel 单元测试上的 PDO 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55391167/

相关文章:

php - Mysql:间隙检测查询未检测到间隙

php - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器相对应的手册, '' 文章的 WHERE (`title` LI

PHP MYSQL - 使用 SESSION 更新用户配置文件

Laravel 多态关系与自定义键

php - 根据某些列值拆分 foreach 循环

javascript - TypeScript ts-jest 预处理器的目的是什么?

php - 使用 Json 将 PHP MySQL 中的图像显示到 Android 中的 imageview 中(解析数据时出错)

php - 在 Laravel 中对多个字段求和

android - 如何将 Active Android 与内存数据库结合使用以使用 Robolectric 进行单元测试?

c# - 我如何将 Controller 与过滤器一起进行单元测试(带有 autofac 的 ASP.NET MVC)