2014-09-07 4 views
4

나는 대략 before, beforeEach, afterafterEach을 알고 있지만 모든 테스트를 수행하기 전에 몇 가지 코드를 어떻게 실행해야합니까? 이모카로 초기화 코드를 실행하는 방법

test 
    test1.js 
    test2.js 
    test3.js 

같은 즉

내가 파일 내가 모든 테스트 파일에 before을 넣어 싶지 않아

mocha --recursive 

으로 테스트를 실행합니다. beforeAllTests 또는 --init=setup.js 또는 테스트가 실행되기 전에 일부 JavaScript를 실행할 수있는 것이 필요합니다. 이 특별한 경우에는 테스트를 실행하기 전에 시스템의 로깅 모듈을 구성해야합니다.

모든 테스트 전에 실행되는 일부 init 함수를 호출하는 방법이 있습니까?

+0

모듈을 작성하고 모든 곳에서 필요합니까? 이게 도움이된다면 나는 대답으로 게시 할 것입니다. – user3995789

+1

고마워요.하지만 모든 파일에'before '를 넣는 것보다 낫지 않습니다. – gman

답변

3

초기화 코드 만 필요한 경우 mocha -r ./init이면 충분할 수 있습니다.

ReferenceError: after is not defined

:

var app = require('../app.js'); 
app.listen(process.env.WEB_PORT); 

after(function(done) { 
    var db = mongoskin.db(process.env.DB_URL, {safe:true}); 
    db.dropDatabase(function(err) { 
     expect(err).to.not.be.ok(); 
     db.close(done); 
    }); 
}); 

당신이 오류가 발생합니다 : 심지어 test/mocha.opts

--require ./test/init 
--ui tdd 

에 넣어하지만 당신은 해체 작업을해야하는 경우, 예를 들어, 딜레마가있다 모카는 '--require'를 처리하는 동안 초기화되지 않았을 것입니다.

2

나는 우리의 노드 응용 프로그램에서 최근에 알아 냈 아래로

  1. 재구성 테스트 파일 (테스트/아래 하나의 js 파일 "bootstrap.js"및 하위 폴더에있는 모든 테스트 파일을 넣어) : 를 (/ 후 여기서 일하는 전 세계!) mocha.opts
  2.  
        test 
        ├──unit 
        │ ├── test1 
        │ ├── test2 
        │ └── ... 
        ├──integeration 
        │ ├── test1 
        │ ├── test2 
        │ └── ... 
        ├── bootstrap.js 
        └── mocha.opts 
    
  3. 넣어 '--recursive은'bootstrap.js로 초기화 코드를 넣어

을 수행.

+0

파일의 이름에 따라 다릅니다. 귀하의 경우'bootstrap.js'는'b'로 시작하므로 --recursive mocha에 의해 처음 발견됩니다. – drinchev

+0

이것은 나의 새로운 접근법을 발견 할 때까지 나의 fave 대답이었다 - 나의 대답 (공식적인 모카 솔루션이다) – danday74

관련 문제