忽略创建 React App Rewired 应用程序 jest.config.js
Create React App Rewired application ignoring jest.config.js
我有一个使用“create react app rewired”创建的 React 应用程序。我已经安装了 ts-jest 并希望能够自定义 Jest。我阅读了 ts-jest 的文档并在我的项目的根级别执行 npx ts-jest config:init
以创建初始配置文件。为了测试 jest 确实在使用该配置文件,我在示例测试文件中写了以下行 console.log(window);
并修改了配置,使 testEnvironment
设置为“节点”。
我预计测试会因 window
未定义而失败,但我正在取回 window 对象。我尝试将文件重命名为 jest.config.ts
,结果相同。
我对所有文件进行了全局搜索,看看是否有另一个配置文件覆盖了我的配置,但 none 找到了。
我做错了什么?我知道 jest 预先打包在 create-react-app (CRA) 中。我想 create-react-app-rewired 只会在 CRA 之上包含一些包装器,那么它从哪里获取配置?
我开始意识到 create-react-app-rewired 包与这个问题无关,因为它只是一个包装包,公开了一个 configure-overrides.js
文件以允许开发人员修改 webpack由 create-react-app 管理的配置。
我创建的 jest.config.ts
或 jest.config.js
配置文件没有效果,因为 create react app (CRA) will generate and use its own jest config file 在幕后。
这是我在研究另一个问题时偶然发现的。 GitHub 上的 comment by dstapleton92 帮助我得出了这个结论。
Create React App supports overriding SOME of the values via the "jest" property in package.json
file. Upon inspecting the jest config factory function in CRA、testEnvironment
属性 被硬编码为“jsdom”并且密钥未作为可覆盖属性列表的一部分公开。
这就是我的尝试没有成功的原因。
我有一个使用“create react app rewired”创建的 React 应用程序。我已经安装了 ts-jest 并希望能够自定义 Jest。我阅读了 ts-jest 的文档并在我的项目的根级别执行 npx ts-jest config:init
以创建初始配置文件。为了测试 jest 确实在使用该配置文件,我在示例测试文件中写了以下行 console.log(window);
并修改了配置,使 testEnvironment
设置为“节点”。
我预计测试会因 window
未定义而失败,但我正在取回 window 对象。我尝试将文件重命名为 jest.config.ts
,结果相同。
我对所有文件进行了全局搜索,看看是否有另一个配置文件覆盖了我的配置,但 none 找到了。
我做错了什么?我知道 jest 预先打包在 create-react-app (CRA) 中。我想 create-react-app-rewired 只会在 CRA 之上包含一些包装器,那么它从哪里获取配置?
我开始意识到 create-react-app-rewired 包与这个问题无关,因为它只是一个包装包,公开了一个 configure-overrides.js
文件以允许开发人员修改 webpack由 create-react-app 管理的配置。
我创建的 jest.config.ts
或 jest.config.js
配置文件没有效果,因为 create react app (CRA) will generate and use its own jest config file 在幕后。
这是我在研究另一个问题时偶然发现的。 GitHub 上的 comment by dstapleton92 帮助我得出了这个结论。
Create React App supports overriding SOME of the values via the "jest" property in package.json
file. Upon inspecting the jest config factory function in CRA、testEnvironment
属性 被硬编码为“jsdom”并且密钥未作为可覆盖属性列表的一部分公开。
这就是我的尝试没有成功的原因。