내 회사 프로젝트에서 단위 테스트를 구현하려고하는데 데이터베이스에서 별도의 데이터 집합을 사용하려고하면 이상한 문제가 발생합니다.단위 테스트의 루멘 - 시더
제한된 환경에서 테스트를 수행하려면 전용 데이터베이스에서 데이터를 입력하는 가장 쉬운 방법을 찾고 있습니다. 짧게 말해서, 필자는 삽입 된 데이터의 MySQL 덤프를 사용하기로 결정했습니다.
public function run()
{
\Illuminate\Support\Facades\DB::unprepared(file_get_contents(__DIR__ . '/data1.sql'));
}
지금 여기에 문제가있다 :
이것은 기본적으로 내 시더 코드입니다. 내 단위 테스트에서 , 나는 시더를 호출 할 수 있지만 :
- 나는 setUpBeforeClass()에있는 시더를 호출하는 경우, 그것은 작동합니다. 다른 테스트에 대해 다른 데이터 집합을 호출 할 수 있기 때문에 내 요구에 맞지는 않지만
- 테스트 내에서 시드를 호출하면 데이터가 데이터베이스에 삽입되지 않습니다 (트랜잭션의 유무에 관계없이). 특성).
- 원시 원시 파일을 사용하지 않고 :: raw 또는 :: unprepared 또는 :: statement 대신 DB :: insert를 사용하면 작동합니다. 하지만 필자의 삽입물은 너무 복잡합니다.
는 여기에 내가 같은 결과를 시도 몇 가지이다 :
DB::raw(file_get_contents(__DIR__.'/database/data1.sql'));
DB::statement(file_get_contents(__DIR__ . '/database/data1.sql'));
$seeder = new CheckTestSeeder();
$seeder->run();
\Illuminate\Support\Facades\Artisan::call('db:seed', ['--class' => 'CheckTestSeeder']);
$this->seeInDatabase('jackpot.progressive', [
'name_progressive' => 'aaa'
]);
진행 방법에 대한 모든 포인터를과 나는 setUpBeforeClass (에 있음을한다면 나는 다른 행동을 왜) 시험 내 것 감사하겠습니다!