我的jsconfig.json
文件中有以下配置:
{
"compilerOptions": {
"baseUrl": "./src"
},
"include": ["src"]
}
这让我可以这样做:
import { App } from 'components'
import * as actions from 'actions/app.actions'
而不是这个:
import { App } from '../components'
import * as actions from '../actions/app.actions'
为了开始进行单元测试,我创建了一个简单App.test.jsx
的src/components/tests
import { render } from '@testing-library/react'
import { App } from 'components'
it('renders without crashing', () => {
render(<App />)
})
但是,当我运行yarn test
(这是糖react-scripts test
)时,它会抛出这个丑陋的错误:
FAIL src/components/tests/App.test.jsx
● Test suite failed to run
Your application tried to access components, but it isn't declared in your dependencies;
this makes the require call ambiguous and unsound.
Required package: components (via "components")
Required by: C:\Users\Summer\Code\sandbox\src\components\tests\
23714 | enumerable: false
23715 | };
> 23716 | return Object.defineProperties(new Error(message), {
| ^
23717 | code: { ...propertySpec,
23718 | value: code
23719 | },
at internalTools_makeError (.pnp.js:23716:34)
at resolveToUnqualified (.pnp.js:24670:23)
at resolveRequest (.pnp.js:24768:29)
at Object.resolveRequest (.pnp.js:24846:26)
似乎 Jest(或 Yarn?)认为components
是一个节点包,因为它不知道我的jsconfig.json
. 有没有办法让它知道?还是我必须在 0% 覆盖率和相对进口之间做出选择?
我试过"moduleNameMapper"
在"jest"
我package.json
的文档中解释,但它没有帮助。我得到了同样的错误+一个之后。
我也尝试将components
测试文件更改为,../components
但随后它抱怨组件actions/app.actions
内部是哪个<App />
。
模块名称映射器配置:
/* package.json */
{
/* ... */
"jest": {
"moduleNameMapper": {
"actions(.*)$": "<rootDir>/src/actions$1",
"assets(.*)$": "<rootDir>/src/assets$1",
"components(.*)$": "<rootDir>/src/components$1",
"mocks(.*)$": "<rootDir>/src/mocks$1",
"pages(.*)$": "<rootDir>/src/pages$1",
"reducers(.*)$": "<rootDir>/src/reducers$1",
"scss(.*)$": "<rootDir>/src/scss$1",
"store(.*)$": "<rootDir>/src/store$1",
"themes(.*)$": "<rootDir>/src/themes$1",
"api": "<rootDir>/src/api.js",
}
}
}