其实很简单。
在您的上创建一个测试数据库storage/
文件夹,名称为database.sqlite
或者如果您想要另一个名称或另一个位置,您必须更改配置config/database.php
文件,这些是默认配置:
'sqlite' => [
'driver' => 'sqlite',
'database' => storage_path('database.sqlite'),
'prefix' => '',
],
您有两个选择,您可以编辑您的.env
或者您只需指定要运行迁移的数据库的名称:
php artisan migrate --database=sqlite
如果您更喜欢编辑您的.env
文件,然后我们必须添加一个新变量:
DB_CONNECTION=sqlite
这是因为当这个变量不存在时,Laravel 默认使用 MySQL。.env
file:
//config/database.php file
'default' => env('DB_CONNECTION', 'mysql'),
现在我们的应用程序指向我们的 sqlite 数据库,我们现在可以运行迁移和播种。之后,如果您只想继续运行 MySQL,请删除DB_CONNECTION=sqlite
来自.env
file.
现在您已经在测试数据库上进行了迁移,最后一步就是指定 SQLite 作为测试的默认数据库。
在你的根文件夹中有一个phpunit.xml
文件,打开它并在下面创建一个新变量<php>
node:
<env name="DB_CONNECTION" value="sqlite"/>
现在您的应用程序正在使用 MySQL 并且phpunit正在使用 SQLite。
Remember如果你改变.env
将其更改回默认数据库;
PS
运行迁移时要小心,如果您在迁移本身上指定了连接,它将尝试在该连接上运行它。
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AdminUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('manage')->create('admin_users', function (Blueprint $t) {
$t->increments('id');
$t->string('name');
$t->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::connection('manage')->dropIfExists('admin_users');
}
}
此迁移将始终在连接上运行manage无论您在上指定什么.env
文件或迁移命令中