2

我正在开发一个使用 mocha 运行单元测试的节点应用程序。

当我运行这个命令时:

mocha --compilers coffee:coffee-script --reporter spec ./test/unit/*-test.coffee

我收到此错误:

ERROR: Unknown option --compilers

mocha 似乎很困惑,因为它肯定有编译器选项。当我向项目添加新文件时,此错误开始发生。这是我可以让 mocha 生成的唯一输出。--debug 什么都不做。

假设我安装了一个名为 person 的包。我想全局配置这个包,以便我可以在项目的任何地方导入配置的对象。为此,我导入人员,将其配置为驱动程序,然后再次导出。

但是,当我导入它时(在 Car.coffee 或 Car-test.coffee 中),摩卡咖啡因上述错误而失败。

司机.咖啡

driver = require 'person'
driver.setSkill "Drive"

module.exports = driver

汽车.咖啡

driver = require './driver'
...

汽车测试.coffee

driver = require '../../src/driver'
...

请注意,如果我只是用咖啡编译并运行节点项目,这可以正常工作。在那里导入它没有问题。但是当我使用 mocha 运行时,如果我导入文件会失败。

我无法确定错误。它看起来就像 mocha 中的一个错误,但也许我通过导出我导入的同一个对象来做一些“坏”的事情,而 node 只是更宽容?

我正在使用最新版本的 mocha (1.13.0)。谢谢!

编辑:

这并不能修复错误,并且在语法方面也不是理想的:

person = require 'person'

class driver
  constructor: ->
    person.setSkill "Drive"
    @person = person

module.exports = driver

请注意,仅将其包装在普通对象中是行不通的。

编辑2:

这是其他不起作用的东西:

配置-driver.coffee

configureDriver = (person) ->
  person.setSkill "Drive"

module.exports = configureDriver

汽车.咖啡

driver = require('./configure-driver')(require 'person')

Mocha 抛出与以前相同的错误。

4

2 回答 2

2

也许有点晚了,但希望它会帮助某人(我只花了一个小时翻阅 mocha 的源代码来追踪这一点)。

请尝试使用该命令(重要的是 之后的等号--compilers):

mocha --compilers=coffee:coffee-script --reporter spec ./test/unit/*-test.coffee

我在尝试grunt test使用grunt-mocha-istanbul和 coffeescript 测试定义创建新任务时遇到了这个错误。奇怪的是,如果我直接在我的 shell 中运行命令,它可以工作,但是使用 grunt 任务我得到了和你一样的错误。

于 2014-11-26T02:11:29.980 回答
0

似乎摩卡使用指挥官,它是全球性的。在我的情况下,我在使用指挥官的测试目录下有一个脚本。看起来 Mocha 执行测试脚本,解析 mocha.opts,然后执行规范。为了修复它,我只是将使用命令的脚本移出测试目录,一切都很好。

于 2016-01-14T16:33:11.227 回答