use*_*401 11 javascript unit-testing mocha.js ecmascript-harmony
在我的测试目录中,我有一个mocha.opts包含以下内容的文件:
--harmony
--recursive
--growl
--reporter spec
--require should
Run Code Online (Sandbox Code Playgroud)
当我运行时mocha,我收到以下错误:
/project/server/utilities/encryption.js:3
const
^^^^^
SyntaxError: Use of const in strict mode.
Run Code Online (Sandbox Code Playgroud)
当然,这是因为我的使用const需要ES6 Harmony.当我跑步时mocha --harmony,我的测试执行得很好.我mocha.opts文件中的其他条目按预期工作.
由于某种原因,mocha.opts文件是否忽略了--harmony参数?或者我做错了吗?摩卡文档没有详细说明,我无法在这里或其他任何地方找到答案.
Lou*_*uis 18
提问者问:
当我跑步时
mocha --harmony,我的测试执行得很好.[...]由于某种原因,
mocha.opts文件是否忽略了--harmony参数?
是的,mocha.opts忽略了这个--harmony论点.该--harmony选项不是Mocha选项,而是Node.js选项.这是一个必须在开始执行之前传递给Node.js的选项.但是,mocha.opts在Node.js启动后读取,所以即使Mocha能够理解该选项,它也无法对它做任何事情.
但为什么它在命令行上工作?不应该是这样的情况,当我运行时mocha --harmony,Mocha必须首先启动才能解析--harmony选项吗?不,因为mocha脚本启动了"真正的"摩卡.shell脚本检测--harmony并确保在启动"真实"Mocha时将其传递给Node.js.