Jest.js React测试库:找不到.d.ts中声明的模块

dfuffjeb  于 11个月前  发布在  Jest
关注(0)|答案(1)|浏览(154)

thx为你的时间。
我有一个问题与React测试库。一切都在浏览器中工作。我可以建立,但当运行测试,jest找不到类型脚本定义。


的数据
如果我使用React lazy来导入组件,则不会出现错误。
在我的例子中是UI.d.ts。UI来自webpack模块联邦:

new ModuleFederationPlugin({
    name: "root",
    filename: "remoteEntry.js",
    remotes: { UI: process.env.UI_REMOTE_URL },
    shared: {
        ...deps,
        react: {
            singleton: true,
            requiredVersion: deps.react
        },
        "react-dom": {
            singleton: true,
            requiredVersion: deps["react-dom"]
        }
    }
}),

字符串
UI.d.ts位于根目录。项目树:

├── README.md
├── UI.d.ts
├── package.json
├── public/
├── src/
├── tsconfig.json
├── webpack.config.js
├── yarn-error.log
└── yarn.lock


tsconfig.json

{
  "exclude": [
    "node_modules",
    "./packages/**/node_modules"
  ],
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": false,
    "jsx": "react-jsx"
  },
  "include": [
    "src",
    "**/*.d.ts"
  ]
}

mo49yndu

mo49yndu1#

我从这个answer找到了解决方案。Jest无法识别远程模块。要修复它需要模拟导入的模块:

jest.mock('UI/Button',
  () => ({
    myFunc: () => 'hello'
  }),
  { virtual: true }
);

字符串
更新
模拟需要在测试之外

jest.mock('UI/Button',
  () => ({
    myFunc: () => 'hello'
  }),
  { virtual: true }
);

test('shold be ...',()=>{
    // ....
})

相关问题