Mac과 데비안 스트레치에서 Jest의 coverage 결과가 다른 이야기

개요



한 개발 중 프로젝트에서 지금까지 JS의 테스트 커버리지를 활용할 수 없었기 때문에 가벼운 마음으로 해 나가면,
개발 환경에서는 설정한 임계값을 넘는데 CI 상에서는 패스하지 않기 때문에 배포할 수 없다는 상황이 발생했습니다.

환경


  • 개발 기계
  • OS: maxOS 10.12.6
  • Node.js: 10.8.0
  • npm: 6.3.0

  • CI (Wercker)
  • OS: 데비안 stretch-slim
  • Node.js: 8.x
  • npm: 6.x


  • 둘 다 Jest 버전은 23.4.1를 사용하며,
    설정도 package.json에 기술하고 있기 때문에 공통의 것을 이용하고 있습니다.
    또, 커버리지에 관한 설정은 역치의 설정 밖에 실시하고 있지 않습니다.

    Jest 런타임 명령은 다음과 같습니다.
    jest ./resources/assets/js --no-cache --coverage
    

    결과


  • 임계값을 설정한 채로 배포할 수 있습니다.
  • 이제 개발 환경과 CI 환경의 커버리지가 일치합니다.
  • 커버리지가 일치하지 않는 이유는 테스트 코드 자체가 100%로 커버리지에 포함되었기 때문입니다.
  • macOS에서 테스트 코드의 분이 계상되고 있었던 것과 반대로 데비안 환경상에서 계상되지 않았던 이유는 조사되지 않았습니다. 아시거나 마음에 드는 사람이 있으면 알려주세요


  • 했던 일



    Node.js의 버전을 합쳐 보았지만 관계없는 것 같습니다.
    마지막으로 package.json Jest 설정에 다음을 추가했습니다.
    coveragePathIgnorePatterns [array]
    htps : // / stjs. 이오 / 도 cs / 엔 / 곤후 쿠라 치온. html # ㄔ ㅇ
    {
      "jest": {
        "coveragePathIgnorePatterns": [
          "__tests__",
          "\\.spec\\.js",
          "\\.spec\\.ts"
        ]
      }
    }
    

    형식은 정규 표현 같은 것도 조금 깨끗하게 할 수 있지 않을까 생각합니다.

    좋은 웹페이지 즐겨찾기