DatabaseMigrations
각각의 테스트를 실행하기 전에 DB tables들을 migrate 한다. 각각 테스트가 끝난 후에는 추가되었던 데이터를 지운다.
<?php
namespace Illuminate\Foundation\Testing;
trait DatabaseMigrations
{
/**
* @before
*/
public function runDatabaseMigrations()
{
$this->artisan('migrate');
$this->beforeApplicationDestroyed(function () {
$this->artisan('migrate:rollback');
});
}
}
데이터를 migrate하고 테스트가 끝날 때 roll back한다.
DatabaseTransactions
각각의 테스트를 migrate를 하고 roll back을 하는건 다루기 쉽지만 SQLite를 사용하지 않으면 빠르게 작업하기 어렵다. SQLite의 일부 제한이 있기 때문에 항상 SQLite를 사용할 수 없을 수도 있다.
각각의 테스트가 실행될 때 DatabaseTransactions는 database transaction을 시작한다. 테스트가 실행되고 테스트가 끝날 때 그 transaction은 roll back된다. 이는 각각의 테스트가 끝날 때마다 DB가 깨끗해짐을 의미한다.
<?php
namespace Illuminate\Foundation\Testing;
trait DatabaseTransactions
{
/**
* @before
*/
public function beginDatabaseTransaction()
{
$this->app->make('db')->beginTransaction();
$this->beforeApplicationDestroyed(function () {
$this->app->make('db')->rollBack();
});
}
}
beginTransaction()으로 transaction을 시작하고 test가 끝날 때 roll back을 한다.
'Laravel' 카테고리의 다른 글
Laravel env() vs PHP getenv() (0) | 2020.02.21 |
---|---|
Laravel optional helper 라라벨 (0) | 2020.02.21 |
PhpStorm 공식 홈페이지 단축키 모음 (0) | 2020.01.25 |
Laravel tests, RefreshDatabase (0) | 2020.01.25 |
라라벨 설치 Laravel install (0) | 2019.12.05 |