gpt4 book ai didi

typescript - 避免需要转换模拟 typescript 导入

转载 作者:搜寻专家 更新时间:2023-10-30 20:38:40 25 4
gpt4 key购买 nike

我正在导入一个模拟函数,但由于 Typescript 似乎不知道 Jest 将导入更改为模拟,所以我必须先转换导入的函数,然后才能使用像 mockReturnValue 这样的模拟方法> 等等

jest.mock('../myImport');
import { thisFunctionIsMocked } from '../myImport'

/* ... */

(<Mock<any>>thisFunctionIsMocked).mockReturnValue(42);

如果我不转换导入,Typescript 会声称模拟函数方法不存在。有更好的方法吗?

最佳答案

我一直在寻找同样的东西。不幸的是,关于如何处理这个问题似乎并不多。然而,还有一些替代方案。

1) 您已经在做的事情的语法略有不同:

(thisFunctionIsMocked as jest.Mock).mockReturnValue(42);

2) 使用 require 并在那里转换:

const thisFunctionIsMocked = require('../myImport') as jest.Mock;

更新:

ts-jest 现在有一个 mocked helper你可以使用。引用模拟导入时仍然需要使用它,但这意味着原始源的类型签名不会丢失:

import { mocked } from 'ts-jest/utils';

test('direct', () => {
foo.name();
expect(mocked(foo.name).mock.calls).toHaveLength(1);
});

关于typescript - 避免需要转换模拟 typescript 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42073821/

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