每次testing之前都无法获得所需的文件

我尝试将咖啡与咖啡和柴混合使用。 在包含testing的每个文件之前,我想包含以下文件:

testing/ _helper.coffee

path = require 'path' AppDir = path.resolve("#{__dirname}/../src/app") chai = require('chai') should = chai.should() factories = require('chai-factories') chai.use(factories) 

这样我才能访问AppDirvariables。 所以当我想要一个文件时,我不需要指定app目录的完整path。

testing/应用程序/ 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 

我在setup-test.coffee中尝试了一个正常的需求:

 require '../_helper.coffee' 

我使用的是什么方法,如果运行testing,会出现以下错误:

 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文件,如果有人想知道我如何运行testing:

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 

有人可以帮助我,谢谢。

这是一个解决scheme。

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

你的testing咖啡

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

我所做的是使用出口,并要求返回多个对象,你可以用逗号分隔它们,如果你有更多的出口在你的_helper.coffee。 该命令是相关的。

附注:但为什么你会在你的testing中需要一个文件? 我不想在一个testing的外部文件中有一些隐藏的设置。 以后或其他人都不太容易理解testing。