问题描述
嗨,我实际上需要在某些玩笑文件中将导出的文件从一个应用程序(公共)导入到另一个应用程序(登录),但它没有被玩笑检测到。
Jest 测试文件:
import { auth as ServiceAuth } from "@dfs/standard"
import { ContextAlert } from '@dfs/standard';
describe("login page",() => {
it("test case 1",() => {
const ContextAlert = useContext(ContextAlert );
expect(ContextAlert).toBeTruthy()
})
})
错误信息:
失败 src/Components/LoginPage.test.js ● 测试套件运行失败
Cannot find module '@dfs/standard' from 'LoginPage.test.js'
> 1 | import { auth as ServiceAuth } from "@dfs/standard"
| ^
2 | import { ContextAlert } from '@dfs/standard';
3 |
4 | describe("login page",() => {
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:299:11)
at Object.<anonymous> (src/Components/LoginPage.test.js:1:1)
jest.config.js
module.exports = {
transform: {
"^.+\\.(j|t)sx?$": "babel-jest"
},moduleNameMapper: {
"\\.(css)$": "identity-obj-proxy","\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "identity-
obj-proxy",}
};
但是该文件正在以相同的语法导入到组件文件中。 如何在 jest 测试文件中导入文件?
解决方法
Jest 是一个与浏览器非常不同的环境,解析模块也不同。在 Jest 中加载的代码未捆绑,也未通过 Webpack 处理,因此在运行时不会解析外部。
要使用 cross microfrontend imports 启用单元测试,您可以选择以下选项:
- 将共享依赖发布到注册表(npm 或其他一些内部注册表,例如 artifactory)并将其作为 devDependency 安装在本地,以便 Jest 可以在本地(在 node_modules 内)解析它
- 使用 Jest 的
moduleNameMapper
配置模拟共享依赖 - 在
__mocks__
文件中本地模拟共享依赖
您选择的选项取决于您组织的需求。
另见:https://github.com/single-spa/single-spa.js.org/issues/389