使用mocha,如何运行名​​称中没有*(慢)的所有测试?

时间:2014-11-13 11:51:47

标签: javascript unit-testing testing mocha

我有大量的测试,其中一些有"(慢)"在名称中:

enter image description here

其中一些比标记的测试慢(慢),但是其他测试依赖,所以不能跳过。我只想跳过那些名字中的(慢)名称 - 这可能吗?

我正在使用摩卡。

4 个答案:

答案 0 :(得分:4)

您可以使用两个命令行开关的组合来完成此操作。以下是文档的相关部分:

-g, --grep <pattern> only run tests matching <pattern> -i, --invert inverts --grep matches

答案 1 :(得分:4)

在我看来,您正在为浏览器中加载的页面执行此操作以运行Mocha。要在浏览器中执行此操作,您可以在页面的URL中传递这些参数:

  • grep大致对应于命令行上的--grep选项。这会将测试运行缩小到与传递给grep的表达式匹配的测试。但是,目前(即使是2.0.1)也没有办法让Mocha将此参数解释为正则表达式。它总是被解释为一个字符串。这就是我说“近似对应”的原因。命令行上的--grep是正则表达式,但URL中传递的grep参数是字符串。

  • invert,对应命令行中的--invert选项。这将反转grep执行的匹配,从而选择grep不匹配的测试。

因此,如果您通过附加以下字符串?grep=(slow)&invert=1打开您的页面,它将运行其中没有字符串"(slow)"的测试。

答案 2 :(得分:2)

Grep接受正则表达式模式,你可以这样做:

mocha --grep '^(?!.*\\b\(slow\)\\b)'

答案 3 :(得分:0)

mocha --opts mocha.opts --grep "^(?!.*SomeExpression)"

我无法在表达式中添加括号-bash / mocha失败。我建议您删除括号并在说明中放入类似@performance的标记,并使用与前一个类似的grep表达式执行mocha。