如何解决如何运行他们描述的 mocha 测试只包含一个字符串并排除另一个字符串? 依靠其他东西来选择测试使用 Mocha 的测试跳过功能编写自己的 Mocha Root Hook
如果我想运行包含字符串 wanted_string
的测试,以下行有效:
mocha -g "wanted_string"
然后最重要的是,我怎么能排除一个字符串 unwanted_string
。 mocha 命令 -g
[https://mochajs.org/#command-line-usage] 允许使用正则表达式,但我无法弄清楚。
我尝试过的东西:
-
不同的正则表达式
mocha -g "(?=.*wanted_string)(?!.*unwanted_string).*"
来自Create Regex to find whole word only if includes one string and excludes another
mocha -g "^(?=.*(?:wanted_string))(?:unwanted_string))"
-
Mocha 命令 --invert
mocha -g "wanted_string" | mocha -i 1 -g "unwanted_string"
解决方法
要做到这一点的正则表达式如果不是不可能的话,非常(我很确定 JS 正则表达式不是图灵完备的)。您给出的示例有效,因为测试仅发生在字符串的开头。
除非我错了,这里有你的选择......
依靠其他东西来选择测试
您可以在目录层次结构中组织测试,而不是依赖于通过包含和排除的组合进行过滤。然后,您可以在层次结构的特定分支中选择测试,并使用 Regex 排除其中的一些。
使用 Mocha 的测试跳过功能
如果你想排除的很少,临时修改测试函数或套件需要很少的时间,使其不运行:https://danielkorn.io/post/skipping-tests-in-mochajs/,
编写自己的 Mocha Root Hook
您可以编写一个 Mocha Root Hook,从配置文件或环境变量中单独包含和排除模式以及基于此的跳过测试。
,mocha --grep "^(?=.*(?:wanted))((?! unwanted).)*$"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。