Babel.js 如何在单spa环境中导入. test.js文件中的其他应用程序导出文件

4jb9z9bj  于 2022-12-08  发布在  Babel
关注(0)|答案(1)|浏览(167)

嗨,我实际上需要在一些jest文件中将导出的文件从一个应用程序(公用)导入到另一个应用程序(登录),但它没有被jest检测到。
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测试文件中导入这个文件呢?

tzdcorbm

tzdcorbm1#

Jest是一个与浏览器非常不同的环境,解析模块也是不同的。在Jest中加载的代码没有捆绑,也没有通过Webpack处理,因此外部代码在运行时不会被解析。
若要启用具有跨微前端汇入的公寓测试,您可以选择下列选项:

  • 为该共享依赖项发布模拟(以便模拟和实际实现彼此最接近)
  • 使用Jest的moduleNameMapper配置模拟共享依赖项
  • __mocks__文件中本地模拟共享依赖项
  • 将共享的依赖项发布到一个注册表(npm或其他一些内部注册表,如artifactory),并在本地将其安装为devDependency,以便Jest可以在本地解析它(尽管这可能需要在jest/node环境中执行单独的构建)

您选择的选项取决于组织的需要。
另请参阅:https://github.com/single-spa/single-spa.js.org/issues/389

相关问题