node.js - 每次测试前无法获取所需文件

标签 node.js coffeescript mocha.js chai

我尝试将 Mocha 与 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 变量。这样当我需要一个文件时,我就不必指定应用程序目录的完整路径。

测试/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 '../_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 文件:

生成文件

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

谁能帮帮我,谢谢。

最佳答案

这是一个解决方案。

_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 中有更多导出,则可以用逗号分隔它们。该订单是相关的。

旁注: 但为什么你的测试中需要一个文件呢?我不想在一个测试的外部文件中包含一些隐藏的设置。这并不会让以后或其他人更容易理解测试。

关于node.js - 每次测试前无法获取所需文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11922649/

相关文章:

javascript - nodejs expressjs 上传图片并显示

java - 在 NodeJs 中编写 Java.class 文件(保留魔数(Magic Number))

javascript - 如何从 Javascript 客户端发送多个 Socket IO socket.handshake.query 值

javascript - webdriverio 'setValue' 到输入字段会引发错误 InvalidElement State

node.js - Blubird 从不点击 .catch 语句

javascript - 如何让hubot列出当前篝火聊天室中的所有用户?

javascript - 如何将 Coffeescript 添加到 Node.js 骨架框架?

javascript - 通过 Node.js 将 base64 编码的图像上传到 Amazon S3

node.js - mocha.opts 可以添加评论吗?

node.js - sinon 期望的不同参数/返回值