代码之家  ›  专栏  ›  技术社区  ›  Aaron

条令\DBAL\Driver\PDOException:尝试在单元测试中使用工厂时找不到驱动程序

  •  2
  • Aaron  · 技术社区  · 6 年前

    只要我不试图模仿DB对象,我的单元测试就可以正常工作。我创建了一个工厂,并试图在我的一个测试中使用它。然而,我不断地 a could not find driver error

    这是我的测试课。

    <?php
    /**
     * Created by PhpStorm.
     */
    
    namespace Tests\Unit\Helper\Results;
    
    use Jobscan\Helper\Results\FormatHelper;
    use Illuminate\Foundation\Testing\WithFaker;
    use Illuminate\Foundation\Testing\RefreshDatabase;
    use Illuminate\Foundation\Testing\WithoutMiddleware;
    use Jobscan\Models\Document\Cv;
    use Tests\TestCase;
    
    class FormatHelperTest extends TestCase
    {
        public function testFindingsForUploadedDocxResume_whenFontTypeIsNotStandard_resultFontTypeShowsNegativeResult()
        {
            $cv = factory(Cv::class)->create([
                'content' => "Testing Test test",
            ]);
            dd($cv);
    
    
    
     }
    }
    

    在我的phpunit测试中

    <env name="DB_CONNECTION" value="test_db"/>
    <env name="DB_DATABASE" value=":memory:"/>
    

    这就是我一直犯的错误

     Caused by
     Doctrine\DBAL\Driver\PDOException: could not find driver
    

    数据库.php文件

     // This database is ephemeral and used for testing purposes.
            'test_db' => [
                'driver'   => 'sqlite',
                'database' => ':memory:',
                'prefix'   => '',
            ],
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   adam    6 年前

    在测试中定义设置方法:

    public function setUp()
    {
        parent::setUp();
    }
    
        2
  •  0
  •   Steve Chamaillard    6 年前

    您的错误意味着在PHP库中找不到sqlite驱动程序,这意味着扩展没有正确加载。 php.ini 文件(通过执行以下操作查找其路径: php --ini

    extension=pdo_sqlite

    如果写为:

    ;extension=pdo_sqlite ;