首页 > 解决方案 > laravel phpunit 未知数据库':内存:

问题描述

这个错误困扰着我。我的 laravel 版本是 5.6 我认为我没有对我的 phpunit.xml 文件进行任何更改,除了这些

<php>
        <env name="APP_ENV" value="testing"/>            
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="MAIL_DRIVER" value="array"/>
        <env name="DB_CONNECTION" value="sqlite"/>
        <env name="DB_DATABASE" value=":memory:"/>

    </php>

我正在写这样的测试:

<?php

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\DatabaseMigrations;

class DemoTest extends TestCase
{
    use DatabaseMigrations;

    public function test_it_is_nothing()
    {
        $this->get('/volunteers')->assertStatus('200');
    }
}

我还参考了这篇文章Laravel multiple databases PHPUnit但没有帮助。

标签: laravellaravel-5phpunit

解决方案


请确保以下事项:-

  • 确保你安装了 sqlite db
  • 清除你的配置php artisan config:clear
  • 还要确保您的 phpunit.xml 存在于您的项目根目录中
  • 检查您的 phpunit.xml 中是否有 DB_DRIVER 环境,请删除它
  • 运行测试时尝试将您的配置指向 phpunit.xmlvendor/bin/phpunit --config PATH_TO_YOUR_PHPUNIT_XML_FILE
  • 尝试更新您的 phpunit 版本

如果以上都不起作用,请尝试将另一个数据库配置添加到您的 config/database.php

'sqlite_testing' => [
    'driver'   => 'sqlite',
    'database' => ':memory:',
    'prefix'   => '',
]

那么你的 phpunit.xml 看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
    ...
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
        <env name="DB_DEFAULT" value="sqlite_testing" />
    </php>
</phpunit>

推荐阅读