摩卡是否忽略mocha.opts中的--harmony选项?

时间:2014-08-31 15:20:00

标签: javascript unit-testing mocha ecmascript-harmony

在我的测试目录中,我有一个文件mocha.opts,其中包含以下内容:

--harmony
--recursive
--growl
--reporter spec
--require should

当我运行mocha时,我收到以下错误:

/project/server/utilities/encryption.js:3
const
^^^^^
SyntaxError: Use of const in strict mode.

当然,这是因为我使用const需要ES6 Harmony。当我运行mocha --harmony时,我的测试执行得很好。我mocha.opts文件中的其他条目按预期工作。

由于某种原因,mocha.opts文件是否会忽略--harmony参数?或者我做错了吗?摩卡文档不详细说明,我无法在这里或其他任何地方找到答案。

2 个答案:

答案 0 :(得分:18)

提问者问道:

  

当我运行mocha --harmony时,我的测试执行得很好。 [...]

     

由于某种原因,mocha.opts文件是否会忽略--harmony参数?

是的,mocha.opts忽略--harmony参数。 --harmony选项不是Mocha选项,而是Node.js选项。这是一个必须在开始执行之前传递给Node.js 的选项。但是,在Node.js启动后会读取mocha.opts,所以即使Mocha能够理解该选项,它也无法对它做任何事情。

但为什么它在命令行上运行?不应该是这样的情况,当我运行mocha --harmony时,Mocha必须首先启动才能解析--harmony选项吗?不,因为mocha是启动“真正的”Mocha的脚本。 shell脚本检测--harmony并确保在启动“真实”Mocha时将其传递给Node.js。

答案 1 :(得分:0)

您不能支持mocha.opts中包含的内容。当您致电mocha时,您可以在命令行中添加更多内容。请参阅this