这是我的目录 orders
的样子。我想使用手动 Jest 模拟测试 orders/helpers
中的函数。
orders
__mocks__
helpers.ts
__tests__
orders.ts
helpers.ts
orders.ts
在 orders/helpers.ts
中,我正在导出一个简单的函数:
export const addIdToOrder = (order: Omit<NewOrderState, 'id'>): Order =>
({
...order,
id: v4(),
} as Order);
在 orders/__tests__/orders.ts
中,我可以模拟模块 orders/helpers
如下:
const MOCK_ID = 'test-id-1234';
// mock addIdToOrder so we can have a deterministic id in tests
jest.mock('../helpers', () => ({
__esModule: true,
addIdToOrder: (order: Omit<NewOrderState, 'id'>): Order =>
({
...order,
id: MOCK_ID,
} as Order),
}));
但是,现在我需要添加另一个测试文件,它还需要从 orders/helper
模拟这个函数,所以我添加了 orders/__mocks__/helpers
并尝试在那里定义模拟。
这是我目前所拥有的:
const helpers = jest.genMockFromModule('../helpers');
export const MOCK_ID = 'test-id-09e26f6a-48cc-4754-bb54-22043adbe2ea';
helpers.addIdToOrder = (order: Omit<NewOrderState, 'id'>): Order =>
({
...order,
id: MOCK_ID,
} as Order);
helpers.addToOrder
有错误:
Error:(8, 1) TS2571: Object is of type 'unknown'.
如何输入helpers
?我可以做一些像 import * as helpers from '../helpers'
这样的事情,然后以某种方式从该模块中获取导出对象的类型吗?我该怎么做?
现在我将 helpers 键入 any
,这会消除所有 TS 错误,但我不想这样做。
最佳答案
您可以使用 typeof
关键字捕获类型。
import * as helpers from '../helpers'
type HelpersType = typeof helpers;
const helpers = jest.genMockFromModule<HelpersType>('../helpers');
关于reactjs - 在 Jest 中编写手动模拟时,如何键入调用 genMockFromModule 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154774/