用 Jest 模拟 Lerna 范围模块
Posted
技术标签:
【中文标题】用 Jest 模拟 Lerna 范围模块【英文标题】:Mock Lerna scoped module with Jest 【发布时间】:2021-12-04 18:01:41 【问题描述】:我有一个使用 Lerna 的 monorepo 设置。项目使用 tsc 编译,测试使用 ts-jest v27 运行。
我正在尝试测试的其中一个文件包含以下代码:
import someFunction from '@local/package/dist/something'
const someLogic = () =>
someFunction()
@local/package
是 Lerna 符号链接的本地 monorepo 包。
我需要模拟someFunction
。
我尝试过的事情:
jest.mock('@local/package/dist/something')
效果为零,仍调用原文件。
import * as something from '@local/package/dist/something'
jest.spyOn(something, 'someFunction')
零效应。
import * as something from '@local/package/dist/something'
something.someFunction = jest
.fn()
.mockReturnValue(123)
导致TypeError: Cannot set property "someFunction" of #<Object> which has only a getter
jest.config.js:
moduleNameMapper:
'(.*)something(.*)': '<rootDir>/src/somethingMock.js',
零效应。
我尝试在包含测试的包的 package.json 旁边创建“mocks/@local/package/dist/something.js”。 零效应。
我累了,需要帮助....我做错了什么?
【问题讨论】:
【参考方案1】:这些是触发 HTTP 端点的端到端测试,我试图模拟的代码在单独的进程中运行,哈哈。
【讨论】:
以上是关于用 Jest 模拟 Lerna 范围模块的主要内容,如果未能解决你的问题,请参考以下文章