mocha.opts 已弃用,如何迁移到 package.json?

Ras*_*uls 18 javascript mocha.js node.js

我正在做一个庞大的项目,从上周开始我更新了 mocha,现在我们收到警告:

弃用警告:通过 mocha.opts 的配置已弃用,并将从 Mocha 的未来版本中删除。改用 RC 文件或 package.json。

我想将选项迁移到 package.json 但没有好的迁移指南。GitHub 上所有有类似问题的帖子都回答“查看文档”。但是文档没有显示如何将一个选项从 mocha.opts 转移到 package.json,也没有关于它应该如何格式化的信息。我唯一能找到的是“spec”属性是文件运行的模式。对我来说,没有其他东西是隐含的。

我们的 mocha.opts 文件:

--reporter dot
--require test/mocha.main
--recursive src/**/*.test.js
--grep @slow --invert
Run Code Online (Sandbox Code Playgroud)

我的尝试不起作用

  "mocha": {
    "reporter": "dot",
    "require": "test/mocha.main",
    "spec": "src/**/*.test.js",
    "grep": "@slow --invert"
  },
Run Code Online (Sandbox Code Playgroud)

请解释我应该如何格式化此配置块以实现与使用上述 mocha.opts 中的选项时相同的行为

小智 10

我也很难找到迁移到新标准的确切解决方案,但最终可以解决这些问题。我希望我不会太晚,我仍然可以帮助你。

所以首先,你需要一个新的配置文件来替换 mocha.opts。Mocha 现在提供了相当多的可用于它的文件格式变体。你可以在他们的 GIT 中找到这些。我拿了.mocharc.json并将使用它作为进一步的例子。虽然添加它并没有改变任何东西,只是它对你也没有影响。

问题是将 mocha 测试脚本指向package.json. --config在下面的脚本部分的测试脚本中提供标志package.json

"scripts": {
    "test": "mocha --config=test/.mocharc.json --node-env=test --exit",
    "start": "node server"
}
Run Code Online (Sandbox Code Playgroud)

现在您可以更新.mocharc.json文件中的配置,它们应该正确反映。下面是一个例子。

{
"diff": true,
"extension": ["js"],
"package": "../package.json",
"reporter": "spec",
"slow": 1500,
"timeout": 20000,
"recursive": true,
"file": ["test/utils/helpers.js", "test/utils/authorizer.js"],
"ui": "bdd",
"watch-files": ["lib/**/*.js", "test/**/*.js"],
"watch-ignore": ["lib/vendor"]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用file属性来定义哪些文件应该首先执行,因为它们需要首先执行。它们将按照您在文件数组中提供的顺序执行。您可以使用的另一个属性是slow其值定义了 mocha 是否认为执行任何测试用例所花费的时间很慢。


小智 7

查看此链接以查看 mocha 选项文件的新格式:

https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.yml

基本上,您需要一个 .mocharc.yml 或 .mocharc.json(还有更多格式)来设置 mocha 配置。我来到这个帖子也希望找到答案。希望这对你有帮助!


小智 6

我最终package.json通过使用数组而不是您所做的字符串文字来完成工作。前任:

"mocha": {
  "require": ["tsconfig/register"]
}
Run Code Online (Sandbox Code Playgroud)

也许值得尝试一下!