2012-08-12 3 views
2

J'essaie de configurer moka en combinaison avec coffeescript et chai. Avant chaque fichier contenant les essais, je veux inclure le fichier suivant:Impossible d'obtenir un fichier requis avant chaque test

test/_helper.coffee

path = require 'path' 

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

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

Il en est ainsi que j'ai accès au variabel AppDir. De sorte que je n'ai pas besoin de spécifier le chemin complet vers le répertoire de l'application quand je veux avoir besoin d'un fichier.

test/app/setup-test.coffee

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

J'ai essayé les configurations suivantes:

Ajouté _hellper.coffee aux options de mocha en ligne de commande comme ceci:

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

et ainsi :

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

Et j'ai essayé habituelle, dans setup-test.coffee:

require '../_helper.coffee' 

Quelle que soit la méthode que j'utilise, je reçois l'erreur suivante si je lance le test:

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) 

Et voici mon MAKE fichier si quelqu'un veut savoir comment j'exécuter les tests:

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 

quelqu'un peut-il s'il vous plaît aide-moi, merci.

Répondre

2

Voici une solution.

_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) 

votre test café

{AppDir} = require "../helpers" 

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

Ce que je l'ai fait est l'exportation d'utilisation et nécessitent des rendements des objets multiples, vous pouvez les séparer par des virgules si vous avez plus d'exportations dans votre _helper .café. L'ordre est pertinent.

Note de côté: Mais pourquoi auriez-vous besoin d'un fichier dans votre test? Je ne voudrais pas avoir une configuration cachée dans un fichier externe pour un test. Cela ne facilite pas la compréhension du test plus tard ou pour d'autres.

+0

Je ne l'utilise pas pour un fichier mais je veux l'utiliser pour les fichiers multipal, c'est donc une solution parfaite. Je vous remercie –

Questions connexes