如何运行他们描述的只包括一个字符串而不包括另一个字符串的摩卡测试



如果我想运行包含字符串wanted_string:的测试,则以下行有效

mocha -g "wanted_string"

最重要的是,我怎么能排除一个字符串unwanted_string呢。摩卡指令-g[https://mochajs.org/#command-行用法]允许regex,但我无法弄清楚。



我尝试过的东西:

  1. 不同Regex

    mocha -g "(?=.*wanted_string)(?!.*unwanted_string).*" 
    

从Create Regex中,仅当包含一个字符串并排除另一个时才查找整个单词

mocha -g "^(?=.*(?:wanted_string))(?:unwanted_string))"
  1. Mocha命令--反转

    mocha -g "wanted_string" | mocha -i 1 -g "unwanted_string"
    

Regex要做到这一点即使不是不可能,也是非常困难的(我很确定JS Regex不是图灵完备的(。您给出的示例之所以有效,是因为测试只发生在字符串的开头。

除非我错了,以下是你的选择。。。

依靠其他东西来选择测试

您可以在目录层次结构中组织测试,而不是依赖于通过包含和排除的组合进行筛选。然后,您可以在层次结构的特定分支中选择测试,并使用Regex排除其中一些测试。

使用Mocha的测试跳过功能

如果要排除的测试函数很少,那么临时修改测试函数或套件以使其不运行所需的时间很少:https://danielkorn.io/post/skipping-tests-in-mochajs/,

写你自己的摩卡根钩

您可以编写一个Mocha Root Hook,它从配置文件或环境变量中分别包含和排除模式,并在此基础上跳过测试。

mocha --grep "^(?=.*(?:wanted))((?! unwanted).)*$"

最新更新