2014-06-09 4 views
1

테스트를 시작하기 전에 몇 가지 테스트 라이브러리를로드하는 gruntfile에 모카 태스크를 설정했습니다. 다음은 그 모습입니다 :jshint exported 지시문이 작동하지 않습니다.

mochaTest: { 
     unit: { 
      options: { 
       reporter: 'spec', 
       require: function(){ 
        var chai = require('chai'); 
        var chaiAsPromised = require('chai-as-promised'); 
        chai.use(chaiAsPromised); 
        /* exported assert, expect */ 
        var assert = chai.assert; 
        var expect = chai.expect; 
        chai.should(); 
       } 
      }, 
      src: ['backend/test/**/*.js'] 
     } 
    }, 

그래서 jshint가 내가 assert를 사용하고 gruntfile에서 기대하지 않는다고 불평합니다. .jshintrc 파일에 exported을 추가하려고 시도했습니다. jshint grunt task, 심지어 inline directive으로 변경되었지만 jshint는 상관하지 않습니다. 방금 안전을 위해 최신 버전으로 업그레이드 했는데도 여전히 운이 좋지 않습니다.

나는 지금 당장 // jshint ignore:line을 사용할 수 있지만 가능한 경우 /*exported assert, expect */ 지시어로 작업하고 싶습니다. 더 이해하기 쉽습니다. 당신이 그들에게 할당하기 전에 외부 범위에서 변수를 선언하면

답변

1

불행히도 나는 대답에 대해 논평할만한 충분한 평판이 없습니다. 그러나 James의 대답에 뭔가를 추가하고 Reno의 후속 의견을 추가하십시오. gruntfile에 'var'선언을 추가하면 해당 파일에 로컬 변수가 만들어 지므로 테스트에서 액세스 할 수 없습니다. 필자가 볼 때 JSHint를 전역 변수로 사용하려는 경우이 전역 변수를 허용하도록 구성해야합니다. 당신은 내가 생각하는 그와 같이

그 지역함으로써 그것을 해결 할 수없는 당신 (그래도 난 그것을 테스트 할 기회가 없었어요)

/* exported assert, expect */ 

... 

    mochaTest: { 
    unit: { 
     options: { 
      reporter: 'spec', 
      require: function(){ 
       var chai = require('chai'); 
       var chaiAsPromised = require('chai-as-promised'); 
       chai.use(chaiAsPromised); 
       assert = chai.assert; 
       expect = chai.expect; 
       chai.should(); 
      } 
     }, 
     src: ['backend/test/**/*.js'] 
    } 
}, 

JSHint 문서는 언급 원하는 방식으로 작동합니다 다음 내 보낸 지시어를 사용하지 않은 옵션과 함께 사용해야하지만 그 의미가 무엇인지 잘 모르겠다. (어쩌면 그것이 수출 문제를 만났을 수도있다.)

+0

은 그것을 테스트했으며 '엄격 모드'가 아닌 한 작동합니다. +1 및 내 감사! – Renaud

2

당신이 오류를 해결할 수 있습니다

var assert, expect; 
whatever({ 
    mochaTest: { 
     unit: { 
      // ... 
      require: function() { 
       // ... 
       assert = chai.assert; 
       expect = chai.expect; 
      } 
     } 
    } 
}); 

잘 모르겠어요 당신이 실제로 비록 처음에 그 변수에 할당하는 이유 ... 모카는 어떻게 그들을 사용합니까? 나는 그들에게 지역에서 선언하는 것이 어떻게 될지는 전혀 보지 못했다.

+0

나는이 변수들이 자동으로 수출 될 것이라고 생각했다. 테스트지만 아니. 'should' 구문은 예상대로 작동하지만'expect'와'assert'는 정의되어 있지 않습니다. 그 점을 지적 해 주셔서 감사합니다! – Renaud

+0

[grunt-mocha-test] (https://www.npmjs.org/package/grunt-mocha-test)에서 ** 컴파일러 지정 ** 코드 예제를 사용하여 변수를 내보낼 수 있다고 생각한 것 같습니다. npm 페이지. – Renaud

+0

변수를 var 키워드로 선언하면 최상위 범위에서도 전역 변수가 생성되지 않습니다 (즉, 다른 필수 스크립트에서는 사용할 수 없음). – Renaud