导出所需的相同对象会混淆摩卡
我正在使用摩卡运行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目录中的指令使用到脚本上,而且都很好。