1

我想将 glob 与摩卡一起使用。遗憾的是 mocha 不支持 exclude 并且它也不传递 glob 选项,所以我必须在不使用 glob 忽略选项的情况下以单一模式解决这个问题。https://github.com/mochajs/mocha/issues/1577另一种解决方案是使用 mocha.opts,但这与业力不兼容,我不知道为什么。我可以为 karma 定义一个与 karma 兼容的 opts 文件,为 node 定义一个与节点兼容的 opts 文件,但这会在问题解决后立即中断,因此我正在寻找另一种解决方案。https://github.com/karma-runner/karma-mocha/issues/88

我需要匹配并从结果中test/**/*.spec.js排除。test/**/*.karma.spec.js这可能与单个 glob 模式有关吗?

4

2 回答 2

2

你总是可以一起mocha使用and 。例如,以下命令将返回和 exclude的列表:find test/**/*.spec.jstest/**/*.karma.spec.js

find test -name '*.spec.js' ! -path '*.karma.spec.js'

结合它mocha来实现你想要的:

mocha $(find test -name '*.spec.js' ! -path '*.karma.spec.js')
于 2016-08-13T00:22:12.597 回答
1

我们这里所说的是AND("*.spec.js", NOT("*.karma.spec.js"))用逻辑运算符表示的。我检查了 glob 文档,它不支持AND逻辑运算符。

对我们来说幸运的是,我们可以将此运算符转换为ORwith negation: NOT(OR(NOT("*.spec.js"), "*.karma.spec.js"))。我试过了test/**/!((!(*.spec.js)|*.karma.spec.js)),但它不起作用。它试图 require 一个带有路径的模块,该test/features路径是目录的路径,而不是 js 文件,所以难怪它不管理它。我不知道那是什么错误,但它显然不起作用。

忘记此AND运算符的另一种可能的解决方案,并且仅使用否定与NOT("*.karma").spec.js. 我尝试了这个test/**/!(*.karma).spec.js,它工作正常。

于 2016-03-16T16:34:14.320 回答