San*_*il9 2 typescript jestjs ts-jest
我正在尽力遵循笑话文档,并且我也在尽力自学。我在关注官方笑话网站上的文档时遇到问题。我在模拟模块部分。它与 axios 有关,但我不断在打字稿中收到错误,该错误表明该模拟实现不是其属性(无论模拟是什么)
我尝试环顾四周,看看这是否是我的配置的问题,但我无法弄清楚。
// foo.ts
export default function() {
// some implementation;
};
Run Code Online (Sandbox Code Playgroud)
测试.ts
import foo from '../src/foo';
// test.js
jest.mock('../src/foo'); // this happens automatically with automocking
foo.mockImplementation(() => 42);
foo();
console.log(foo())
Run Code Online (Sandbox Code Playgroud)
这是我在mockImplementatin上遇到的错误
Property 'mockImplementation' does not exist on type '() => void'.ts(2339)
Run Code Online (Sandbox Code Playgroud)
我所做的就是遵循文档。在我进行分区之前我没有遇到任何问题。
这foo.ts:
export default function() {
return 1;
};
Run Code Online (Sandbox Code Playgroud)
...可以这样嘲笑:
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!
})
Run Code Online (Sandbox Code Playgroud)
Jest提供的类型jest.Mocked可用于为模块的自动模拟版本生成正确的类型。
在这种情况下,模块有一个default导出,因此这一行:
const foo = mockedFooModule.default
Run Code Online (Sandbox Code Playgroud)
...将分配foo给正确键入的模拟默认导出。
| 归档时间: |
|
| 查看次数: |
2412 次 |
| 最近记录: |