Jest 找不到 Docusaurus theme/Layout 模块
Docusaurus theme/Layout module cannot be found by Jest
我正在使用 Docusaurus 构建文档站点。在其中一个反应插件页面中,我使用 https://docusaurus.io/docs/using-themes
中的 import Layout from '@theme/Layout';
但是,当我编写生产测试时,模块无法被 Jest 拾取。
● Test suite failed to run
Cannot find module '@theme/Layout' from 'src/pages/key-fields-filter.js'
Require stack:
src/pages/key-fields-filter.js
src/pages/key-fields-filter.test.js
98 | import clsx from 'clsx';
99 | import styles from './key-fields-filter.module.css';
> 100 | import Layout from '@theme/Layout';
| ^
101 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
我已经设置了 jest.config.js 和 babel.config.js。根据 Docusaurus 文档,@theme 别名指向以下路径:
(这里我用的是Layout.js不是Navbar.js,但应该是一样的。)
website
├── node_modules
│ └── docusaurus-theme
│ └── theme
│ └── Navbar.js
└── src
└── theme
└── Navbar.js
所以,我设置jest.config.js如下:
moduleDirectories: [
"node_modules",
"node_modules/docusaurus-theme/theme",
"src/theme"
],
但是还是不行。任何人都知道 Docusaurus 在这种情况下是如何工作的?我试图从 node_modules 手动 link 到 Layout.js,但我找不到它。我什至不确定 Docusaurus link 最初是如何处理它的。
我只是使用空组件模拟 Layout,因为 Layout 来自 docusaurus,它不需要对我的项目进行测试。
在jest.config.js
moduleNameMapper: {
...,
'@theme/Layout': '<rootDir>/tests/layout-mock.js'
},
布局中-mock.js
import React from 'react';
export default function Layout(props) {
return (
<div>{props.children}</div>
)
}
我正在使用 Docusaurus 构建文档站点。在其中一个反应插件页面中,我使用 https://docusaurus.io/docs/using-themes
中的import Layout from '@theme/Layout';
但是,当我编写生产测试时,模块无法被 Jest 拾取。
● Test suite failed to run
Cannot find module '@theme/Layout' from 'src/pages/key-fields-filter.js'
Require stack:
src/pages/key-fields-filter.js
src/pages/key-fields-filter.test.js
98 | import clsx from 'clsx';
99 | import styles from './key-fields-filter.module.css';
> 100 | import Layout from '@theme/Layout';
| ^
101 | import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
我已经设置了 jest.config.js 和 babel.config.js。根据 Docusaurus 文档,@theme 别名指向以下路径: (这里我用的是Layout.js不是Navbar.js,但应该是一样的。)
website
├── node_modules
│ └── docusaurus-theme
│ └── theme
│ └── Navbar.js
└── src
└── theme
└── Navbar.js
所以,我设置jest.config.js如下:
moduleDirectories: [
"node_modules",
"node_modules/docusaurus-theme/theme",
"src/theme"
],
但是还是不行。任何人都知道 Docusaurus 在这种情况下是如何工作的?我试图从 node_modules 手动 link 到 Layout.js,但我找不到它。我什至不确定 Docusaurus link 最初是如何处理它的。
我只是使用空组件模拟 Layout,因为 Layout 来自 docusaurus,它不需要对我的项目进行测试。
在jest.config.js
moduleNameMapper: {
...,
'@theme/Layout': '<rootDir>/tests/layout-mock.js'
},
布局中-mock.js
import React from 'react';
export default function Layout(props) {
return (
<div>{props.children}</div>
)
}