按照 Jest Docs,在 mockImplementation() 上出现错误。我究竟做错了什么?
Following Jest Docs, Getting an error on mockImplementation(). What am I doing wrong?
我正在尽我最大的努力跟着文档开玩笑,我也在尽我最大的努力自学。我在关注 jest 官方网站上的文档时遇到问题。我在模拟模块部分。它与 axios 有关,但我在打字稿中不断收到错误消息,即 mockImplementation 不是 属性 on(无论 mock 是什么)
我试过四处查看是否是我的配置问题,但我无法弄清楚。
foo.ts
// 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())
这是我在 mockImplementatin 上遇到的错误
Property 'mockImplementation' does not exist on type '() => void'.ts(2339)
我所做的就是遵循文档。在进入部分之前,我没有遇到任何问题。
这个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
分配给正确键入的模拟默认导出。
我正在尽我最大的努力跟着文档开玩笑,我也在尽我最大的努力自学。我在关注 jest 官方网站上的文档时遇到问题。我在模拟模块部分。它与 axios 有关,但我在打字稿中不断收到错误消息,即 mockImplementation 不是 属性 on(无论 mock 是什么)
我试过四处查看是否是我的配置问题,但我无法弄清楚。
foo.ts
// 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())
这是我在 mockImplementatin 上遇到的错误
Property 'mockImplementation' does not exist on type '() => void'.ts(2339)
我所做的就是遵循文档。在进入部分之前,我没有遇到任何问题。
这个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
分配给正确键入的模拟默认导出。