2012-08-12 10 views
2

coffeescript 및 chai와 함께 모카를 설정하려고합니다.모든 테스트 전에 파일을 가져올 수 없습니다.

테스트/_helper.coffee

path = require 'path' 

AppDir = path.resolve("#{__dirname}/../src/app") 

chai = require('chai') 
should = chai.should() 
factories = require('chai-factories') 
chai.use(factories) 

이 내가 APPDIR의 variabel에 액세스 할 수 있도록입니다 : 모든 파일이 테스트를 포함하기 전에, 나는 다음과 같은 파일을 포함합니다. 따라서 파일을 필요로 할 때 app 디렉토리의 전체 경로를 지정할 필요가 없습니다.

시험/응용 프로그램/setup-test.coffee

describe 'Setup instance', -> 
    it 'should be a object', -> 
     setup = require "#{AppDir}/setup" 
     setup.should.be.a('object') 
나는 다음과 같은 설정 시도

: 그래서 같은

추가 된 _hellper.coffee에 모카 명령 줄 옵션 :

./node_modules/.bin/mocha --require coffee-script --require test/_helper.coffee --compilers coffee:coffee-script --recursive --reporter spec test 

등을 :

./node_modules/.bin/mocha --require coffee-script --compilers coffee:coffee-script --recursive --reporter spec test/_helper.coffee test 
내가 테스트를 실행하면 내가 사용하는 적 방법, 나는 다음과 같은 오류가 무엇
require '../_helper.coffee' 

: 여기

Setup instance 
    1) should be a object 


    ✖ 1 of 1 test failed: 

    1) Setup instance should be a object: 
    ReferenceError: AppDir is not defined 
     at Context.<anonymous> (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/test/app/setup-test.coffee:8:28) 
     at Test.Runnable.run (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runnable.js:184:32) 
     at Runner.runTest (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runner.js:300:10) 
     at Runner.runTests.next (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runner.js:346:12) 
     at next (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runner.js:228:14) 
     at Runner.hooks (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runner.js:237:7) 
     at next (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runner.js:185:23) 
     at Runner.hook (/Users/ivotrompert/Dropbox/projects/nodejs/getWallpapers/node_modules/mocha/lib/runner.js:205:5) 
     at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

그리고 내 MAKE입니다와 나는 정상이 setup-test.coffee에서 필요로 시도 누군가가 내가 테스트를 실행하는 방법을 알고 싶다면 파일 :

Makefile을

REPORTER = spec 
DEFAULT_COMMAND = ./node_modules/.bin/mocha --require coffee-script --ui bdd --compilers coffee:coffee-script --recursive --growl --reporter 
check: test 

test: 
    @NODE_ENV=test $(DEFAULT_COMMAND) $(REPORTER) 
test-watch: 
    @clear 
    @NODE_ENV=test $(DEFAULT_COMMAND) $(REPORTER) --watch 
coverage: 
    @jscoverage --no-highlight src src-cov 
    @SRC_COV=1 $(DEFAULT_COMMAND) html-cov > coverage.html 
    @rm -rf src-cov 
ifeq ($(shell uname), Darwin) 
    @open coverage.html 
else 
    @xdg-open coverage.html &> /dev/null & 
endif 

.PHONY: test 

수있는 사람하시기 바랍니다 도와주세요, 고마워요.

답변

2

다음은 하나의 솔루션입니다.

_helper.coffee

path = require 'path' 

exports.AppDir = path.resolve("#{__dirname}/../src/app") 

chai = require('chai') 
should = chai.should() 
factories = require('chai-factories') 
chai.use(factories) 

테스트 커피

{AppDir} = require "../helpers" 

describe 'Setup instance', -> 
    it 'should be a object', -> 
     setup = require "#{AppDir}/setup" 
     setup.should.be.a('object') 

내가 무슨 짓을하는 것은 사용 수출하고 여러 개체를 반환을 요구하는 당신이 당신의 _helper에 더 많은 수출이 있다면 당신은 쉼표 (,)로 구분 할 수 있습니다 .커피. 명령은 관련이 있습니다.

사이드 노트 : 하지만 왜 테스트에 파일이 필요합니까? 하나의 테스트를 위해 외부 파일에 숨겨진 설정을 갖고 싶지 않습니다. 그렇다고해서 나중에 또는 다른 테스트를 쉽게 이해할 수는 없습니다.

+0

하나의 파일에는이 파일을 사용하지 않지만 다중 파일에는이 파일을 사용하고 싶습니다. 따라서 완벽한 솔루션입니다. 고맙습니다 –

관련 문제