如果我想运行包含字符串wanted_string
:的测试,则以下行有效
mocha -g "wanted_string"
最重要的是,我怎么能排除一个字符串unwanted_string
呢。摩卡指令-g
[https://mochajs.org/#command-行用法]允许regex,但我无法弄清楚。
我尝试过的东西:
不同Regex
mocha -g "(?=.*wanted_string)(?!.*unwanted_string).*"
从Create Regex中,仅当包含一个字符串并排除另一个时才查找整个单词
mocha -g "^(?=.*(?:wanted_string))(?:unwanted_string))"
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).)*$"