Laravel PHPUnit Test에서 메모리를 DB로 사용하기 cover image

Laravel PHPUnit Test에서 메모리를 DB로 사용하기

김재동 • June 21, 2018

laravel test

Laravel의 PHPUnit 테스트에서 factory 등을 이용해 데이터베이스에 자료를 저장하면 실제로 DB에 저장이 된다. 하지만 테스트이기 때문에 굳이 실제 DB에 자료를 저장하거나 삭제하지 않고 sqlite 엔진에 파일 대신 메모리를 사용하도록 설정하면 보다 쾌적한 테스트를 할 수 있다.

프로젝트 root/phpunit.xml 의 php 태그 부분

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="BCRYPT_ROUNDS" value="4"/>
    <env name="CACHE_DRIVER" value="array"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="QUEUE_DRIVER" value="sync"/>
    <env name="MAIL_DRIVER" value="array"/>
</php>

에서 아래의 코드 두 줄을 추가한다.

<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>

실제 DB가 무엇이든 테스트는 sqlite로 진행하며 sql 파일 대신 메모리를 사용하겠다는 의미이다.