微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决单spa环境下.test.js文件中如何导入其他应用导出的文件

嗨,我实际上需要在某些玩笑文件中将导出的文件一个应用程序(公共)导入到另一个应用程序(登录),但它没有被玩笑检测到。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。