问题描述
我设置了 husky
来进行预提交格式化和运行测试。当我做 git commit -m "readme fix"
时,我得到了这个:
PASS src/App.test.jsx
✓ plug (15 ms)
Test Suites: 1 passed,1 total
Tests: 1 passed,1 total
Snapshots: 0 total
Time: 0.91 s,estimated 1 s
Ran all test suites related to changed files.
Watch Usage
› Press a to run all tests.
› Press f to run only Failed tests.
› Press q to quit watch mode.
› Press p to filter by a filename regex pattern.
› Press t to filter by a test name regex pattern.
› Press Enter to trigger a test run.
但实际上并没有提交。我不能对终端做任何事情?除了 Ctrl + C。即使我尝试输入 a、f、q 等 - 也没有任何反应。如何实际提交?我做错了什么?
解决方法
一长串“按某事...”消息表明测试运行器没有退出,但它正在等待做更多的事情。按 q
,它将退出并结束提交。
更改运行测试的方式,使其不在“监视”模式下启动(您可能应该从其命令行中删除 --watch
)。
您发布的输出看起来类似于 jest
的输出。看看Jest CLI options。
--watch
或 --watchAll
的目的是以 TDD 工作方式运行 Jest。在初始执行测试后,它会监视测试文件并在修改后立即运行它们。你不再关心运行它,你只需要编写用例和代码。
它不适合你想要的。
顺便说一句,运行测试或代码 linting 或代码美化器或任何其他需要 0.5 秒以上才能完成的程序是一个坏主意。 Git 与 Subversion 或其他较旧的 CVS-es 之间的主要区别之一是,使用 Git 会立即提交。遵循 Git 哲学是保存工作的更明智的方法。你应该经常提交,提交操作不应该妨碍你。通过添加冗长的操作作为提交钩子,您可以防止自己使用 Git,因为它被设计为使用。