我正在开发一个使用mocha运行单元测试的节点应用。
当我运行此命令时:
mocha --compilers coffee:coffee-script --reporter spec ./test/unit/*-test.coffee
我收到此错误:
ERROR: Unknown option --compilers
似乎摩卡很困惑,因为它肯定有一个编译器选项。当我向项目添加新文件时,会发生此错误。这是我可以获得mocha生成的唯一输出。 --debug什么都不做。
假设我有一个名为person的软件包。我想全局配置这个包,以便我可以在项目的任何地方导入配置的对象。为此,我导入person,将其配置为驱动程序,然后再次导出。
但是,当我导入它时(在Car.coffee或Car-test.coffee中),mocha失败并出现上述错误。
Driver.coffee
driver = require 'person'
driver.setSkill "Drive"
module.exports = driver
Car.coffee
driver = require './driver'
...
Car-test.coffee
driver = require '../../src/driver'
...
请注意,如果我只是使用coffee编译并运行节点项目,这样可以正常工作。在那里导入它没有问题。但是当我使用mocha运行时,如果我导入文件则会失败。
我无法确定错误。这似乎就像摩卡中的一个错误,但也许我通过导出我导入的同一个对象做了一些“坏”的事情,而节点只是更宽容了?
我正在使用最新版本的mocha(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')
Mocha会抛出与以前相同的错误。
答案 0 :(得分:2)
也许有点晚了,但希望它会帮助某人(我花了一个小时来翻阅mocha的源代码来跟踪它)。
尝试使用该命令(重要位是--compilers
之后的等号):
mocha --compilers=coffee:coffee-script --reporter spec ./test/unit/*-test.coffee
我在尝试使用 grunt-mocha-istanbul 和coffeescript测试定义创建新的grunt test
时遇到了这个错误。奇怪的是,如果我直接在我的shell中运行命令它可以工作,但是使用grunt任务我得到了和你一样的错误。
答案 1 :(得分:0)
似乎摩卡使用指挥官而且它是全球性的。在我的情况下,我在测试目录下有一个使用commander的脚本。看起来Mocha执行测试脚本,解析mocha.opts,然后执行规范。为了解决这个问题,我只是使用指挥官从测试目录中移动脚本,一切都很好。