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

时间:2018-11-14 19:49:20

标签: laravel driver factory phpunit-testing

只要我不尝试模拟数据库对象,我的单元测试就可以正常工作。我创建了一个Factory,并试图在其中的一项测试中使用它。但是,我不断收到a could not find driver error。我查了几个堆栈答案,而我的php版本是7.1,所以不太确定是什么导致了错误。

这是我的测试班。

<?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

database.php文件

 // This database is ephemeral and used for testing purposes.
        'test_db' => [
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => '',
        ],

2 个答案:

答案 0 :(得分:0)

在测试中定义一个setUp方法:

public function setUp()
{
    parent::setUp();
}

答案 1 :(得分:0)

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

extension=pdo_sqlite

如果写成:

;extension=pdo_sqlite,则应删除;