此错误困扰着我。我的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,但没有帮助。
答案 0 :(得分:0)
请确保以下内容:-
php artisan config:clear
vendor/bin/phpunit --config PATH_TO_YOUR_PHPUNIT_XML_FILE
如果以上方法均无效,请尝试将另一个数据库配置添加到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>
答案 1 :(得分:0)
对我来说,问题在于我正在与正在测试的模型建立另一个连接。 例如:
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Salesperson extends Model
{
use SoftDeletes;
protected $connection = 'mysql_dynamic_db';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'f_name',
'cnic',
'address',
'mobile',
'email',
'salary',
'comm_percent',
];
}
因此,在我运行测试时,我只注释了以下行:
protected $connection = 'mysql_dynamic_db';
,上面的错误消息“ unknown database:memory:”消失了。现在一切正常。