CI 中带有打字稿路径的玩笑“找不到模块”

2024-05-10

在 Gitlab-CI 环境中,我们的 Jest 测试中有 2 个失败,并显示Cannot find module.
奇怪的是,它可以在我本地的 Win10 机器上运行 - 即使我在类似的 docker-container 中运行测试(node 12.12.0).

这是控制台输出:

FAIL apps/server/src/domain/dashboard/permission-group.service.spec.ts
Test suite failed to run
  Cannot find module '@cm/utils-server' from 'license.service.ts'
     9 |   isLicenseFileContent,
    10 |   LicenseStatus,
  > 11 |   parseLicenseInfo
       |                   ^
    12 | } from '@cm/license-shared';
    13 | import { ExitCode } from '../../util/exit-codes';
    14 | import { readFile } from '@cm/utils-server';
    at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)
    at Object.<anonymous> (src/domain/license/license.service.ts:11:24)

我不确定如何正确解释此输出:

  1. permission-group.service.spec.ts:这是失败的测试
  2. Cannot find module '@cm/utils-server' from 'license.service.ts':
    好的,测试或者它的一些依赖项,使用license.service.ts并在license.service.ts归档'@cm/utils-server'找不到模块。
  3. What is the meaning of error-indicator (> at parseLicenseInfo)?
    • 这是为了进口@cm/license-shared- 不是为了@cm/utils-server如2中的错误消息所示
    • @cm/utils-server也被导入,但是第 14 行下面有 2 行: 那么这可能只是一个玩笑中的错误?

我刚刚遇到这个问题并寻找一些解决方案。成立this https://www.xspdf.com/resolution/50171412.html站点提供了有关可以做什么的线索:配置 Jest 的 moduleNameMapper 属性。

所以,阅读文档 https://jestjs.io/docs/en/configuration#modulenamemapper-objectstring-string--arraystring我找到了这个解决方案:

  1. 打开tsconfig.json and jest.config.js文件(或同等文件)

  2. In tsconfig.json,找到你的绝对路径定义。我的配置如下所示:

"paths": {
    "@modules/*": ["modules/*"],
    "@config/*": ["config/*"],
    "@shared/*": ["shared/*"]
}
  1. In the jest.config.json,找到并取消注释moduleNameMapper属性并开始将 TS 绝对路径转换为 ​​Jest 映射器语法。听起来很复杂,但事实并非如此:
moduleNameMapper: {
    "@modules/(.*)": "<rootDir>/src/modules/$1",
    "@config/(.*)": "<rootDir>/src/config/$1",
    "@shared/(.*)": "<rootDir>/src/shared/$1",
}
  • The <rootDir>如果自动定义,并指向package.json目录
  • "@modules/(.*)"是“以 '@module/' 开头的任何字符串,后面跟着任何内容的正则表达式
  • "<rootDir>/src/modules/$1"是对应的目录。$1是指向括号 ((.*))。其他表达式将由$2, $3等等

完成此操作后,我能够毫无问题地执行测试。

在执行上述步骤之前控制台输出:

$ jest
 FAIL  src/modules/appointments/services/CreateAppointmentService.spec.ts
  ● Test suite failed to run

    Cannot find module '...'

之后控制台输出:

$ jest
 PASS  src/modules/appointments/services/CreateAppointmentService.spec.ts

希望这对某人有帮助, 谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CI 中带有打字稿路径的玩笑“找不到模块” 的相关文章

  • 使用 Jest 模拟延迟() RxJS

    有没有简单的方法来嘲笑delay 例如 带有假时间的可观察对象中的 RxJS 方法 我有这个方法 register user return this checkLog user delay 500 flatMap 当我删除时delay 方法
  • 对测试文件使用 tsconfig 标志,但将其从构建中排除

    我有一个tsconfig json包含显式的文件include模式为src 我也有测试存在于test 但这些仅使用执行ts jest我从来不想把它们编译成我的dist文件夹或在捆绑源代码时包含它们 这工作正常 除了我开始在一些测试文件中收到
  • 重用 Jest 单元测试

    我正在尝试使用 Jest 测试几个数据库实现 为了帮助测试这些实现 我首先针对两个实现都预期实现的 API 提出了一组单元测试 我目前正在努力将这两个实现传递给测试套件 下面是最简单形式的 虚拟 MongoDB 实现 class Mongo
  • 如何在本地重现 Jest“网络错误”-浮动错误

    当我偶尔在管道上运行测试时 我会收到不同文件的 网络错误 因为axios要求 尽管有时我根本没有收到错误 但由于某种原因 无论我做什么 我都无法在本地得到该错误 我使用相同的节点版本v12 16 1 我尝试将 testTimeout 减少到
  • 如何使用 Jest 模拟 AWS Cognito CognitoIdentityServiceProvider?

    我正在尝试编写单元测试 我需要模拟来自认知服务的方法的响应 Cognito身份服务提供商 https docs aws amazon com AWSJavaScriptSDK latest AWS CognitoIdentityServic
  • 如何测试从父组件传递的子组件中的回调单击?

    我有以下父组件 import React Fragment from react export class Parent extends Component constructor props super props this state
  • 使用 jest 存根函数

    有没有办法使用 jest API 来存根函数 我习惯于使用 sinon 存根 在这里我可以使用存根为来自我的测试单元的任何函数调用编写单元测试 http sinonjs org releases v1 17 7 stubs http sin
  • firebase.storage() 不是玩笑测试用例中的函数

    我正在使用 Jest 来测试我的 firebase 功能 这一切都在浏览器中进行 因此我与服务器端的 firebase 没有任何冲突 当我使用firebase auth or firebase database 一切正常 当我尝试使用时fi
  • 如何使用 jest 通过 Promise.all 设置多次提取测试

    我在测试中使用 jest 我正在使用 React 和 Redux 并且执行以下操作 function getData id notify return dispatch gt dispatch anotherFunction Promise
  • 如何用 Jest 模拟 Sequelize?

    我正在尝试为调用 Sequelize 来创建数据库的代码编写单元测试 我一生都无法弄清楚如何模拟对 Sequelize 的调用 以便我可以断言他们已经正确创建了数据库表 我点击 Sequelize 的代码如下 import Sequeliz
  • Jest - 模拟函数,从另一个文件导入

    测试的文件使用从另一个文件导入的函数 import myFunc from myFile 如何在该文件的测试中模拟该函数的返回值 我正在使用笑话 这对我有用 我不确定这是否是一个好的做法 import as myFile from myFi
  • 对于调用另一个异步函数的异步函数,玩笑测试失败

    我正在尝试测试一个使用另一个异步函数返回的数据的异步函数 这是解释我的问题的代码 StudentInfo js export async function getData studentData imported from another
  • 用玩笑测试 Observables

    如何使用 Jest 测试 Observables 我有一个每秒触发一次的 Observable 我想在玩笑超时之前测试第一个事件是否正确触发 const myObservable timer 0 1000 Example here it s
  • 使用角度测试 fakeAsync 和 jest it.each

    使用 Angular 8 angular builders jest 8 0 2 jest 24 8 并给出以下测试通过 import tick fakeAsync from angular core testing it test 100
  • Jest - 测试使用react-router的组件

    我正在测试一个呈现具有以下 contextTypes 的子组件的组件 Component contextTypes router PropTypes object isRequired 我对笑话完全陌生 但来自摩卡 酶我从未遇到过这个问题
  • Jest/Enzyme SVG Sprites 意外令牌 <

    我在使用 SVG 精灵在组件上使用 Jest 和 Enzyme 创建快照测试时遇到问题 我正在使用 svg sprite loader 包 https github com kisenka svg sprite loader https g
  • 如何让 Jest 查看我为 MongoDB Stitch 编写的函数?

    我正在尝试 Stitch 这是一个来自 MongoDB 的无服务器 托管 JavaScript 环境 我的主要目的是帮助我学习现代 JavaScript 但我也正在尝试编写一个有用的应用程序 我编写了以下函数 并将其保存在我的 Stitch
  • 如何在react/redux应用程序中以jest方式访问组件的子组件

    我想在 Redux 应用程序中测试 Connect 内的组件 this component TestUtils renderIntoDocument
  • React/Jest - 如何模拟触摸“滑动”事件

    我有一个组件 每当完成滑动交互时就会触发函数调用 这种滑动交互可以由 touchEvent 或 mouseEvent 执行 我的目标是检查每当发生滑动时该函数是否被调用 但我在玩笑测试中无法模拟 touchEvent 使用 swiper r
  • 跳过测试文件 Jest 中的一项测试

    我正在使用 Jest 框架并有一个测试套件 我想关闭 跳过其中一项测试 谷歌搜索文档没有给我答案 您知道答案或需要检查的信息来源吗 我在这里找到了答案 https devhints io jest https devhints io jes

随机推荐