我正在竭尽全力地跟着文档一起开玩笑,并且我也在尽力自己学习。在关注Jest官方网站上的文档时遇到问题。我在模拟模块部分。它与axios有关,但我一直在打字稿中收到错误消息,那就是ockmImplementation不是其属性(不管是什么模拟物)
我尝试四处看看是否是我的配置有问题,但我无法弄清楚。
// foo.ts
export default function() {
// some implementation;
};
test.ts
import foo from '../src/foo';
// test.js
jest.mock('../src/foo'); // this happens automatically with automocking
foo.mockImplementation(() => 42);
foo();
console.log(foo())
这是我在模拟immplementatin上遇到的错误
Property 'mockImplementation' does not exist on type '() => void'.ts(2339)
我正在做的只是关注文档。直到我要进行介绍,我才有问题。
答案 0 :(得分:1)
此foo.ts
:
export default function() {
return 1;
};
...可以这样被嘲笑:
import * as fooModule from '../src/foo';
jest.mock('../src/foo');
const mockedFooModule = fooModule as jest.Mocked<typeof fooModule>;
const foo = mockedFooModule.default;
test('foo', () => {
foo.mockImplementation(() => 2);
expect(foo()).toBe(2); // Success!
})
Jest
的键入提供了jest.Mocked
,可用于为模块的自动模拟版本生成正确的键入。
在这种情况下,模块只有一个default
导出,因此此行:
const foo = mockedFooModule.default
...将foo
分配给正确键入的模拟默认导出。