导出所需的相同对象会混淆摩卡

我正在使用摩卡运行unit testing的节点应用程序。

当我运行这个命令时:

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

我得到这个错误:

 ERROR: Unknown option --compilers 

看来摩卡是混乱的,因为它肯定有一个编译器选项。 当我添加一个新的文件到项目时,这个错误开始发生。 这是我可以得到摩卡生成的唯一输出。 – 破坏者什么都不做。

比方说,我有一个名为人安装的软件包。 我想全局configuration这个包,这样我就可以在我的项目的任何地方导入configuration的对象。 为此,我导入人员,将其configuration为驱动程序,然后重新导出。

但是,当我导入它(无论是在Car.coffee或Car-test.coffee),摩卡失败,出现上述错误。

Driver.coffee

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

Car.coffee

 driver = require './driver' ... 

Car-test.coffee

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

请注意,这工作正常,如果我只是用咖啡编译和运行节点项目。 这里没有问题导入。 但是当我用摩卡运行,如果我导入文件失败。

我无法确定这个错误。 这看起来就像摩卡的一个错误,但也许我正在做一些“坏”的东西,通过导出相同的对象,我导入,节点只是更宽容?

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

编辑:

这不能解决这个错误,而且不是理想的语法:

 person = require 'person' class driver constructor: -> person.setSkill "Drive" @person = person module.exports = driver 

请注意,简单地将其包装在一个普通的对象不起作用。

编辑2:

这是另一个不起作用的东西:

configure-driver.coffee

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

car.coffee

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

摩卡像以前一样抛出相同的错误。

也许有点晚了,但希望它会帮助别人(我只是花了一个小时分页通过摩卡的源代码来追踪这个)。

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

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

我尝试使用grunt-mocha-istanbul和coffeescripttesting定义尝试创build一个新的grunt test时遇到了这个错误。 奇怪的是,如果我直接在shell中运行这个命令,它的工作原理却是使用了这个咕噜的任务,我得到了和你一样的错误。

看来摩卡使用指挥官,这是全球性的。 在我的情况下,我有一个脚本在testing目录下使用指挥官。 它看起来像摩卡执行testing脚本,分析mocha.opts,然后执行规格。 为了解决这个问题,我只是把testing目录中的指令使用到脚本上,而且都很好。