【问题标题】:Mocha throws an error when no tests are found. Can this be suppressed?当没有找到测试时,Mocha 会抛出错误。这能被压制吗?
【发布时间】:2016-02-06 21:41:50
【问题描述】:
我在命令行上运行 Mocha,如下所示:
mocha --recursive "./src/**/*.spec.js"
这很好用。但是,如果没有找到测试文件,则会抛出此错误:
cannot resolve path (or pattern) './src/**/*.spec.js'
有没有办法在不存在测试时抑制此错误消息?
(澄清一下,这是相关的,因为它是我的React Slingshot starter kit 的一部分,因此在他们删除我的示例测试以开始他们的项目后将不存在任何测试)。
【问题讨论】:
标签:
javascript
unit-testing
mocha.js
【解决方案1】:
这是一个已知问题,已多次报告,例如here 或 here。最相关的 GitHub 问题是这个 feature request 那个 replaces 错误,带有更具描述性的消息。希望这个 PR 能尽快合并。
目前,您可以在入门工具包中包含一个 shell 脚本,该脚本仅在存在测试文件时才会执行 mocha 测试运行器。
test.sh(需要 Bash 4.0 或更高版本以获得 globstar 支持)
#!/bin/bash
count=`ls -1 src/**/*.spec.js -name 'Prams' -type d 2> /dev/null | wc -l`
if [ "$count" -gt "0" ]; then
npm run test:mocha --silent
else
echo -e "\033[0;31mWrite some tests!" && exit 1
fi
package.json
"scripts": {
"test": "./test.sh",
"test:mocha": "mocha 'src/**/*.spec.js'"
},
不幸的是,这不适用于 glob 大括号部分 - 即使目录中有一些可用的测试但集合中的第一个目录为空,mocha 也会抛出错误。