Jest Watch Mode 失灵?试试这些解决方案

阅读时长 4 分钟读完

Jest 是一个非常流行的 JavaScript 测试框架,它提供了一个 Watch Mode,可以在你修改代码时自动运行测试。但是,有时候 Watch Mode 会出现一些问题,比如测试不会自动运行,或者运行的测试数量不正确。这篇文章将介绍一些常见的 Watch Mode 失灵问题,并提供解决方案。

问题 1:测试不会自动运行

这是 Watch Mode 最常见的问题之一。如果你修改了代码,但是测试没有自动运行,那么你需要检查一下以下几个方面:

方案 1:检查 Jest 配置文件

首先,你需要检查 Jest 配置文件是否正确配置了 Watch Mode。在 Jest 配置文件中,需要将 watch 属性设置为 true,例如:

方案 2:检查测试文件和源代码文件的路径

如果你修改了源代码文件,但是测试没有自动运行,那么你需要检查一下测试文件和源代码文件的路径是否正确。Jest 默认会监视与测试文件同一目录下的所有文件,如果你的测试文件和源代码文件不在同一目录下,需要在 Jest 配置文件中设置 roots 属性,例如:

这里的 <rootDir> 表示项目根目录的路径。

方案 3:检查文件名和文件后缀

如果你修改了文件名或文件后缀,但是测试没有自动运行,那么你需要检查一下文件名和文件后缀是否正确。Jest 默认只监视 .js.jsx.ts.tsx 文件,如果你使用了其他文件后缀,需要在 Jest 配置文件中设置 moduleFileExtensions 属性,例如:

这里的 moduleFileExtensions 表示要监视的文件后缀名数组。

问题 2:运行的测试数量不正确

有时候,Watch Mode 会运行错误的测试或者不运行某些测试。如果你遇到了这种情况,可以尝试以下解决方案:

方案 1:检查测试文件的命名规则

Jest 默认会运行所有以 .test.js.spec.js 结尾的文件中的测试。如果你使用了其他命名规则,需要在 Jest 配置文件中设置 testMatch 属性,例如:

这里的 testMatch 表示要运行的测试文件的匹配规则。

方案 2:检查测试文件的路径

如果你的测试文件不在默认的 __tests__ 目录下,需要在 Jest 配置文件中设置 testPathIgnorePatterns 属性,例如:

这里的 testPathIgnorePatterns 表示要忽略的测试文件路径。

方案 3:检查测试文件的标记

如果你不想运行某些测试,可以在测试文件中使用 test.skiptest.todo 标记。如果你使用了这些标记,需要在 Jest 配置文件中设置 testPathIgnorePatterns 属性,例如:

这里的 .skip.test.js.todo.test.js 表示要忽略的测试文件。

结论

Jest Watch Mode 是一个非常有用的功能,可以让你在开发过程中快速运行测试。但是,有时候 Watch Mode 会出现一些问题,需要我们进行调试和解决。本文介绍了一些常见的 Watch Mode 失灵问题,并提供了解决方案。希望这些解决方案能够帮助你更好地使用 Jest Watch Mode。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6755307c1b963fe9cc528d4a

纠错
反馈