gpt4 book ai didi

reactjs - 在 Jest 中编写手动模拟时,如何键入调用 genMockFromModule 的结果?

转载 作者:搜寻专家 更新时间:2023-10-30 21:32:36 26 4
gpt4 key购买 nike

这是我的目录 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com