Laravel Dusk:一次迁移和种子测试数据库

时间:2020-02-20 08:08:00

标签: laravel-dusk laravel-migrations laravel-seeding

是否可以运行一次迁移和种子设定,并且不刷新测试方法之间的测试数据库?

我有几个相互依赖的测试功能,并且我不想在每个测试之前和之后在一个测试文件中迁移数据库和种子数据库。

示例:

<?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()
    { 
    }

}

2 个答案:

答案 0 :(得分:1)

是的,您可以执行类似的操作

Views\Web.config

将此内容包括在您的黄昏测试课程中。 protected static $migrationRun = false; public function setUp(): void{ parent::setUp(); if(!static::$migrationRun){ $this->artisan('migrate:refresh'); $this->artisan('db:seed'); static::$migrationRun = true; } } 方法在每种测试方法之前运行,如果迁移已运行一次,则不会再次运行。

答案 1 :(得分:0)

请勿使用use DatabaseMigrations。 只是: $ this-> artisan('migrate:fresh'); $ this-> artisan('db:seed'); 喜欢:

public function setUp(): void
    {
        $this->appUrl = env('APP_URL');
        parent::setUp();
        $this->artisan('migrate:fresh');
        $this->artisan('db:seed');
    }

在您的首次浏览器测试中