typescript - 在 monorepo 中使用 jest + typescript

标签 typescript jestjs

我目前正在尝试在 Typescript monorepo 中使用 jest(不是 Lerna 或任何只是 baseURLpaths 的东西,也不是我的决定),我正在测试的文件之一从 monorepo 导入了一些东西。


import {publish, subscribe} from "message-bus"

现在在我的 tsconfig.json我有:
...
    "compilerOptions": {
        "baseUrl": "./packages",
        "paths": {
            "message-bus":["message-bus/src"],
        }, 
...

并在包裹中 jest.config.js :

module.exports = {
...
  preset: 'ts-jest',
  moduleNameMapper: {
    '^message-bus/(.*)$': "../message-bus/src/$1"
  }
...
}

即使所有这些都到位 jest提示找不到模块 message-bus .你能帮我修复我的配置吗?

最佳答案

假设您的 jest.config.js位于包的根目录而不是 monorepo,您​​需要 moduleNameMapper形成从任何位置都可以理解的路径。您可以从 jest.config.js 所在的目录开始执行此操作。文件在,然后从那里建立你的路径。这将创建映射模块的绝对路径。
此外,您的正则表达式捕获组中需要斜线( / ),因为它并不总是在路径中。

const path = require('path');

module.exports = {
  ...
  preset: 'ts-jest',
  moduleNameMapper: {
    '^message-bus(.*)$': path.join(__dirname, '../message-bus/src$1')
  }
  ...
}

关于typescript - 在 monorepo 中使用 jest + typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56794436/

相关文章:

testing - 测试对象是否符合 TypeScript 中的接口(interface)

angular - 在 webpack.config.js 中包含加载程序时出错

angular - 运行 ng serve 时出现 flex-layout 的问题

javascript - 请解释 Angular 2 中的 "#variable"与 "let variable"

typescript - TypeScript 中用于开 Jest 测试的全局函数

javascript - 测试 redux Action

react-native - 如何测试renderItem函数返回<ListItem/>?

typescript - 使用泛型缩小类型

reactjs - 使用 Jest 和 Enzyme 测试 react 路由器重定向

javascript - 使用 Jest 测试 DOMParser