JetBrains IDE에서 Laravel을 사용할 때의 PHPUnit 설정

5206 단어 라라벨PhpStorm
JetBrains의 IDE에서 Laravel을 사용할 때 PHPUnit 설정으로 망설였습니다.
덧붙여 사용하고 있는 것은 IntelliJ IDEA (시용판)입니다만, 아마 PhpStorm 에서도 같다고 생각합니다.

큰 전제


  • Laradock에서 프로젝트 생성
  • 버전
  • Laravel
  • 5.7.19

  • PHP
  • 7.2.4



  • 테스트를 실행해도 DB에 연결할 수 없음



    전제


  • php artisan migrate에서 테이블 만들기
  • 테이블에서 데이터를 검색하는 모델링

  • 사건



    모델을 테스트하는 코드를 작성하고 IDE에서 실행할 때 다음 메시지가 표시되었습니다.
    PDOException : SQLSTATE[08006] [7] could not translate host name "postgres" to address: Name or service not known
    

    덧붙여서, プロジェクト名/.env (은)는 이하와 같이 설정 끝납니다. 특히 문제는 없을 것 같습니다. 1

    프로젝트 이름/.env
    DB_CONNECTION=pgsql
    DB_HOST=postgres
    DB_PORT=5432
    DB_DATABASE=shopping
    DB_USERNAME=default
    DB_PASSWORD=secret
    

    그런데 컨테이너 안에 들어가 phpunit tests/ 를 실행해 보면 문제 없게 움직였습니다.
    여기서 IDE 설정을 확인하면 ...
    - Preference -> Language & Frameworks -> PHP -> CLI Interpreters



    PHP 버전을 인식하고 있기 때문에 문제 없는 것처럼 보이지만, 실제로는 여기에서 Docker를 선택하고 있기 때문이었습니다.

    다음과 같이 Docker Compose를 선택하도록 수정하면 IDE에서도 성공적으로 테스트를 실행할 수 있습니다.



    부작용?



    위의 설정을 실행한 결과 테스트를 실행할 때마다 컨테이너가 종료됩니다.
    Time: 1.7 seconds, Memory: 14.00MB
    
    OK (4 tests, 4 assertions)
    laradock_shop_workspace_1 exited with code 0
    Aborting on container exit...
    
    Process finished with exit code 0
    

    IDE에서 컨테이너를 시작하려고하면 일단 시작하지만 즉시 종료되어 버리기 때문에 조금 불편합니다. 터미널에서 docker-compose up -d nginx workspace 라고 하면 정상적으로 기동하므로 실해는 없을지도 모릅니다만・・・.

    검색할 때 포럼에서 질문이 올라가는 것을 발견했습니다. 분명히 테스트를 실행할 때마다 컨테이너를 시작하고 컨테이너를 종료하는 것이 현재 사양이라고합니다. 회피책도 실려 있지만, 아무도 지금 하나의 생각이・・・. 누군가가 좋은 방법을 알고 있다면 가르쳐주세요. 2

    테스트 결과를 색칠하고 싶습니다.



    망설이는 것은 아니지만 의외로 잊기 쉽기 때문에 메모해 둡니다.

    전제



    PHPUnit은 기본적으로 색칠되지 않습니다. 그러나 --colors 옵션을 추가하면 색이 바뀝니다. 이것과 같은 것을 IDE에서도 하고 싶었습니다.

    설정 방법



    Laravel로 만든 프로젝트를 보면 PHPUnit 구성 파일 phpunit.xml이 있습니다. 이것을 보면 colors="true" 라고 하고, 색부 표시가 벌써 설정이 끝났습니다.

    프로젝트 이름/phpunit.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit backupGlobals="false"
             backupStaticAttributes="false"
             bootstrap="vendor/autoload.php"
             colors="true"
             convertErrorsToExceptions="true"
             convertNoticesToExceptions="true"
             convertWarningsToExceptions="true"
             processIsolation="false"
             stopOnFailure="false">
    

    그래서 IDE에서 phpunit.xml를로드하도록 설정했습니다.
    - Preference -> Language & Frameworks -> PHP -> Test Frameworks
    - Default configuration filephpunit.xml의 경로를 설정합니다.



    요약



    IDE 설정은 귀찮습니다 ...



    보통은 mysql 입니다만, 보통이 아닌 것을 하고 싶어서 postgres로 했습니다. 지금 생각하면 멈추면 좋았다 (쓴웃음) 

    원래, 온순하게 디폴트의 MySQL 그대로 두어 두면 문제 없을지도 모르겠네요. 시도하지 않기 때문에 모릅니다. 

    좋은 웹페이지 즐겨찾기