JavaScript Standard Style은 Mocha를 인식하지 못합니다.


91

나는이 모카 모양이를 좋아하는 테스트 파일 :

var expect = require('chai').expect
var muting = require('../muting')

describe('muting', function () {
  describe('init()', function () {
    it('should inject an object into twitter', function () {
      var twitter = 'twitter'
      muting.init(twitter)
      expect(muting.twitter).to.equal(twitter)
    })
  })
})

내가 실행하면 mochaCLI에서, 그것은 성공적으로 테스트를 실행합니다.

실행하면 standard( JavaScript Standard Style 의 실행 파일 ) Mocha의 프레임 워크 기능에서 다음과 같은 오류가 발생합니다.

standard: Use JavaScript Standard Style (https://github.com/feross/standard)   
c:\..\test\index.js:5:0: 'describe' is not defined.  
c:\..\test\index.js:6:2: 'describe' is not defined.  
c:\..\test\index.js:7:4: 'it' is not defined.

표준이 이러한 기능에 대해 불평하지 않도록하는 가장 깨끗한 방법은 무엇입니까?

답변:


144

실제로 package.json의 모든 단일 전역 변수를 나열 할 필요는 없습니다.

대신 다음과 같이 환경을 지정할 수 있습니다.

"standard": {
  "env": [ "mocha" ]
}

출처 : 공식 ESLint 구성 문서 .


1
좋은 솔루션입니다. it이것이 테스트가 아닌 일반 코드를 호출 할 수 있고 Linting을 통과 한다는 것을 의미하지 않습니까? 다시 말해. 테스트 클래스로만 제한 할 수 있습니까?
Ashley

3
그래, 그게 문제 야 ... package.jsonlinter의 설정은 '글로벌'입니다. 다른 파일에 대해 다른 CLI 인수를 제공하여이를 우회 할 수 있습니다. 예 standard --env mocha test/**/js를 들어 lint-test (테스트되지 않음)와 같이 IRL은 이와 같은 설정을 조정할 필요가 없었습니다.
Krzysztof Kaczor

4
jest를 사용하는 경우 다음을 수행 할 수도 있습니다. "standard": { "env": [ "
jest

: 당신이 이동하여 사용할 수있는 값을 찾을 수 있습니다 @palafox_e에 의해 주석에 추가하려면 github.com/sindresorhus/globals/blob/master/globals.json
Deyon 사무엘 워싱턴을

나는 사용하고 jest있지만 왜 농담이 아닌 모카에만 효과가 있는지 모르겠습니다!
Developerium

147

내 편집 .eslintrc하고 env 섹션에 mocha를 추가 하는 것을 선호합니다 .

...
"env": {
  "commonjs": true,
  "node": true,
  "mocha": true
},
...

이런 식으로 내 package.json파일이 깨끗하게 유지되고 eslint 용 vscode 플러그인이 더 잘 이해합니다.


6
예, 승인 된 답변이어야합니다.
Raymond Wachaga 19-06-26

4
나는 또한 이것이 승인 된 대답이어야한다는 사실을 두 번째로 생각합니다.
Ezrqn Kemboi

61

eslint의 주석 구성은 단일 파일에 대해 훌륭하게 작동하지만 표준 구성을 사용 하여 프로젝트를 수행 하는 것을 선호합니다 . 예package.json globals

{
  "name": "my-package",
  "version": "1.0.0",
  "standard": {
    "globals": [
      "describe",
      "context",
      "before",
      "beforeEach",
      "after",
      "afterEach",
      "it",
      "expect"
    ]
  }
}

50

eslint의 경우 test_file.js 시작 부분에이 줄을 사용하십시오.

/* eslint-env mocha */

1
이 솔루션을 선호합니다!
Michael Ozeryansky

6
당신이있는 경우에 그 모든 테스트 파일을 추가 할 수있는 솔루션이 아니다
Peadar

38

웹 작업자 와 동일한 솔루션을 사용할 수 있습니다.

/* global describe it */
var expect = require('chai').expect
var muting = require('../muting')

describe('muting', function () {
  describe('init()', function () {
    it('should inject an object into twitter', function () {
     var twitter = 'twitter'
     muting.init(twitter)
     expect(muting.twitter).to.equal(twitter)
    })
  })
})

2

Nick Tomlin 이 지적한대로 전역을 선언하면됩니다.

소스 또는 프로젝트의 다른 부분에 대해 테스트에 대한 전역이 다르기 때문에 명령 줄에 넣는 데 사용합니다.

테스트를 위해 우리는

standard --global describe --global it test/

내 프로젝트의 다른 곳에서 jQuery를 사용하는 코드를 린트하고 싶습니다.

standard --global $ src/client/

보너스 팁

Syntastic과 함께 vim을 사용하는 경우 .vimrc 에 추가 할 수 있습니다.

let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.