laravel - 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但没有帮助。
解决方案
请确保以下事项:-
- 确保你安装了 sqlite db
- 清除你的配置
php artisan config:clear
- 还要确保您的 phpunit.xml 存在于您的项目根目录中
- 检查您的 phpunit.xml 中是否有 DB_DRIVER 环境,请删除它
- 运行测试时尝试将您的配置指向 phpunit.xml
vendor/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>
推荐阅读
- c# - 每次单击按钮时自定义错误“on”抛出错误
- ios - 如何在 UITableView [Swift] 中设置特定的节标题
- ruby-on-rails - 如何在本地工作的 Rails 项目中从 SQLite 数据库更改为 PostgreSQL 数据库?
- java - 在生产中使用spring boot有什么缺点?
- extjs6 - 卡片布局问题
- php - 如何从日期生成唯一订单号并将其插入数据库?
- c++ - 从 cpp 执行选择查询时,DB 在什么情况下不会关闭游标?
- java - 我如何将语音替换为每个编辑文本
- angular - 如何在角度单元测试期间修复未定义的“无法读取属性订阅”?
- c# - 从 Godaddy 托管的网站发送电子邮件时出错