Javascript 使用mocha,我如何运行所有的测试*don';名字里有(慢)字吗?

Javascript 使用mocha,我如何运行所有的测试*don';名字里有(慢)字吗?,javascript,unit-testing,testing,mocha.js,Javascript,Unit Testing,Testing,Mocha.js,我有大量的测试,其中一些测试的名称中有“(slow)”: 其中一些测试比标记的测试慢(慢),但被其他测试所依赖,因此不能跳过。我只想跳过那些名字中有(慢)的,可以吗 我正在使用摩卡。您可以使用两个命令行开关组合来实现这一点。以下是文件的相关部分: -g、 --grep仅运行匹配的测试 -i、 --反转反转--grep匹配 Grep接受正则表达式模式,您可以这样做: mocha --grep '^(?!.*\\b\(slow\)\\b)' 在我看来,你这样做就像是为了在浏览器中加载一个页面来

我有大量的测试,其中一些测试的名称中有“(slow)”:

其中一些测试比标记的测试慢(慢),但被其他测试所依赖,因此不能跳过。我只想跳过那些名字中有(慢)的,可以吗


我正在使用摩卡。

您可以使用两个命令行开关组合来实现这一点。以下是文件的相关部分:


-g、 --grep仅运行匹配的测试
-i、 --反转反转--grep匹配

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

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

在我看来,你这样做就像是为了在浏览器中加载一个页面来运行Mocha。要在浏览器中执行此操作,可以在页面的URL中传递以下参数:

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

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

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

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

我无法在表达式中添加括号-bash/mocha失败。我建议您删除括号,在描述中添加@performance这样的标记,并使用类似于上一个表达式的grep表达式执行mocha。

可以从javascript代码中使用正则表达式。例如:
mocha.setup({ui:'bdd',grep:newregexp(“.”)});mocha.run()我想指出,如果一个测试依赖于另一个测试,那么应该将依赖关系移动到before()钩子,该钩子将被相关测试调用。嵌套descripe()套件也很有用。对于同一件事情的多个测试,我倾向于把慢的事情放在一个承诺中,由before钩子等待,也由测试等待。然后在测试中,我将我预期实际失败的代码(如assert.deepEqual)