2

コーヒースクリプトとチャイを組み合わせてモカをセットアップしようとしています。テストを含むすべてのファイルの前に、次のファイルを含めたいと思います。

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)

これは、AppDir バリアベルにアクセスできるようにするためです。ファイルを要求するときに、アプリ ディレクトリへの完全なパスを指定する必要がないようにします。

test/app/setup-test.coffee

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

次の設定を試しました。

次のように _hellper.coffee を mocha コマンドライン オプションに追加しました。

./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 を試しました:

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 ファイルを示します。

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

誰かが私を助けてくれませんか、ありがとう。

4

1 に答える 1

2

ここに1つの解決策があります。

_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.coffee にさらにエクスポートがある場合は、コンマで区切ることができる複数のオブジェクトを返す必要があることです。注文は関連しています。

補足: しかし、なぜテストでファイルが必要なのですか? あるテストのために、外部ファイルに隠し設定を入れたくありません。それは後で、または他の人のためにテストを理解するのを容易にしません.

于 2012-08-13T10:33:27.797 に答える