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 그대로 두어 두면 문제 없을지도 모르겠네요. 시도하지 않기 때문에 모릅니다.  ↩

    좋은 웹페이지 즐겨찾기