Jest 在 Windows 系统下无法 Watch 测试文件的解决方法

阅读时长 5 分钟读完

在使用 Jest 进行前端测试的过程中,Windows 系统的用户可能会遇到一个问题:Jest 无法 Watch 测试文件的变化,导致每次修改后都需要手动重新运行测试。这个问题很大程度上是因为 Windows 系统对文件的 Watch 支持不够好所导致的。那么,我们应该如何解决这个问题呢?本文将会详细介绍几种解决方法,并给出示例代码以供参考。

方法一:增加 Watchman 的缓冲区

Watchman 是一个文件监控工具,Jest 使用它来 Watch 测试文件的变化。对于 Windows 系统用户,如果 Watchman 的缓冲区设置太小,就会导致 Watchman 无法正确地监控文件变化。因此,我们可以通过增加 Watchman 的缓冲区来解决这个问题。

步骤

  1. 下载并安装Windows 版本的 Watchman

  2. 打开命令提示符,输入以下命令来设置 Watchman 的缓冲区大小:

    注意:如果您的系统存在防火墙或代理,可能需要关闭防火墙或者调整代理设置。否则可能会造成 watchman 命令无法正常执行的问题。

  3. 在项目根目录下新建 .watchmanconfig 文件,并添加以下内容:

    subscription_limit_per_user 是用来限制订阅数量的,如果无法解决问题,可以将该值增大。

  4. 重新执行 Jest 命令。

示例代码

.watchmanconfig 文件内容:

方法二:安装 fswatch

fswatch 是类 Unix 系统下的一个文件监控工具,但是它也支持 Windows 系统。如果您不想使用 Watchman,您可以尝试使用 fswatch 来 Watch 文件变化。

步骤

  1. 下载并安装 fswatch。

  2. 在项目根目录下执行以下命令,以修改 Jest 的 Watcher:

  3. 重新执行 Jest 命令。

示例代码

修改 Watcher 的命令:

方法三:使用 Nodejs

如果您不想使用 Watchman 或 fswatch,您可以尝试在 Node.js 中编写一个 Watcher。

步骤

  1. 在项目根目录下新建 test-watcher.js 文件,并添加以下内容:

    -- -------------------- ---- -------
    ----- -------- - --------------------
    ----- ---- - ------------------------------
    
    ----- ------- - ---------------------------------
    
    ----- -------- - -- -- -
      --------- ------ ----- ------- ------- -- -
        -- ----- -
          --------------------- ------------
        - ---- -
          ---------------------------
        -
      ---
    --
    
    ------------------- -- -- -
      -----------
      -------------------- ----------
    ---
  2. 在项目根目录下的 package.json 文件中,将 Jest 的命令修改为:

  3. 重新执行 Jest 命令。

示例代码

test-watcher.js 文件内容:

-- -------------------- ---- -------
----- -------- - --------------------
----- ---- - ------------------------------

----- ------- - ---------------------------------

----- -------- - -- -- -
  --------- ------ ----- ------- ------- -- -
    -- ----- -
      --------------------- ------------
    - ---- -
      ---------------------------
    -
  ---
--

------------------- -- -- -
  -----------
  -------------------- ----------
---

package.json 文件内容:

总结

本文介绍了三种解决 Jest 在 Windows 系统下无法 Watch 测试文件的方法,包括增加 Watchman 的缓冲区、安装 fswatch、以及使用 Node.js 编写 Watcher。读者可以根据自己的情况选择合适的方法。无论采用哪种方法,都需要遵循测试驱动开发的原则,保证代码的质量和可维护性。

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

纠错
反馈