laravel-dusk - Laravel Dusk:迁移和种子测试数据库一次
问题描述
是否可以运行一次迁移和播种并且不刷新测试方法之间的测试数据库?
我有几个相互依赖的测试功能,我不想在一个测试文件中的每个测试之前和之后迁移和播种数据库。
例子:
<?php
namespace Tests\Browser;
use Tests\DuskTestCase;
use Laravel\Dusk\Browser;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Carbon\Carbon;
class AdminTest extends DuskTestCase
{
use DatabaseMigrations;
/**
* Define hooks to migrate the database before and after each test.
*
* @return void
*/
protected function setUp(): void
{
parent::setUp();
$this->artisan('db:seed', ['--class' => 'DatabaseSeeder']);
}
public function testAdminCanLogin()
{
}
/* Create New ticket */
public function testAdminCreateTicket()
{
}
/* View the first ticket */
public function testAdminViewTicket()
{
}
/* Edit the first ticket */
public function testAdminEditTicket()
{
}
/* Assign the first Ticket to an Agent */
public function testAdminAssignTicketToAgent()
{
}
/* Unassign the first Ticket from Agent */
public function testAdminUnassignAgentFromTicket()
{
}
/* Delete the first ticket */
public function testAdminDeleteTicket()
{
}
/* Restore the first ticket */
public function testAdminRestoreTicket()
{
}
}
解决方案
是的,你可以这样做
protected static $migrationRun = false;
public function setUp(): void{
parent::setUp();
if(!static::$migrationRun){
$this->artisan('migrate:refresh');
$this->artisan('db:seed');
static::$migrationRun = true;
}
}
将其包含在您的黄昏测试课程中。setUp
方法在每个测试方法之前运行,如果迁移已运行一次,则不会再次运行。
推荐阅读
- typescript - 签名重载:“布尔”类型的参数不可分配给“真”类型的参数
- r - 是否有 R ggplot 函数可以用不同的变量/数据集填充条形图?
- c# - 使用 POST 从前端恢复坐标
- azure - Azure 数据目录问题
- c# - 如何使用触发器将 2 个相关表中的数据插入到另外 2 个相关表中?
- node.js - 如何使 Dialog Fulfillment Google Calendar 集成工作?
- react-native - 在 React Native 中安装 Android 原生库
- reactjs - 反应列表公共文件
- c++ - error c2007: #define syntax // 注释块中的语法无效?
- sql - SQL替换并计算字符长度并再次替换