Mocha 테스트 파일에서 ESLint 오류 'describe' is not defined no-undef

소개



길기 때문에 관심이없는 사람은 TL;DR까지 날아갑니다.

JavaScript를 깨끗한 상태로 유지하기 위해 없어서는 안되는 존재의 ESLint이지만, 그것이 원래의 JavaScript가 아니라, mocha용의 테스트 파일이라고 이야기가 바뀐다.
파일내에서 정의하고 있지 않는 함수, describe 이나 it 를 사용하기 때문이다.
그렇게 되면, 프로그램이 에러 투성이가 된다.

그러나 이것만을 위해서 테스트 파일에 대해서, ESLint를 무효로 하는 것도 아깝기 때문에, 뭔가 회피하는 방법이 없는지 조사해도 규칙 단위, 여기에서는 no-undef 를 무효로 하는 방법밖에 일본어 의 해설이 발견되지 않았기 때문에 같은 사태가 된 사람의 도움이 되면 이 기사를 쓴다.

TL;DR



소스 코드의 첫 번째 줄에
/* eslint-env mocha */

라고 쓴다. 그만큼.
1행째가 아니어도, mocha 관련의 함수가 나오기 전에 쓰면 무효가 되지만 1행째에 쓰는 편이 깨끗이 해도 좋을 것이다(아마)
다만, // 로부터 시작되는 코멘트라고 기능하지 않는다

Specifying Environments



실은, 디폴트로 ESLint의 모든 테스트 변수를 글로벌 변수로 설정해 주는 환경 설정, mocha 가 있어, JSON이라면
{
    "env": {
        "mocha": true
    }
}

와 같이 쓰면 됩니다만, 그러면 모든 파일, 테스트 파일 이외의 파일까지, mocha의 테스트 변수가 글로벌 변수로서 다루어지므로, 만일, describe라든지 it 를 정의하고 있지 않아도 , no-undef 에 반응하고 있습니다. 이 문제를 해결하기 위해 다음에 작성하는 방법을 사용합니다.

Specifying Globals



ESLint는 프로그램의 주석으로 전역 변수를 설정하고 규칙을 제어 할 수 있습니다.
여기서 단순히 describeit 등을 글로벌 변수로 등록해도 됩니다만, 앞서 쓴 환경설정의 mocha 알기 쉬워질 것이다.
환경 설정을 변경하려면
/* eslint-env ... */

라고 쓰면 좋기 때문에 mocha 를 유효하게 하려면
/* eslint-env mocha */

라고 쓰면 좋다.

후기



일본어의 해설이 없었기 때문에 썼지만, 자주 찾아보면 공식 문서에 그대로 타고 있거나 하기 때문에 기사로 할 정도도 아니다라고 생각하거나와... 아무튼 1밀리 정도 누군가의 도움이 되면. 끝.

참고



Configuring ESLint - ESLint - Pluggable JavaScript linter

ESLint 주석에서 규칙 제어 - Qiita

좋은 웹페이지 즐겨찾기