首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遵循Jest,在mockImplementation()上得到一个错误。我做错了什么?

遵循Jest,在mockImplementation()上得到一个错误。我做错了什么?
EN

Stack Overflow用户
提问于 2019-09-20 17:22:50
回答 1查看 1.7K关注 0票数 2

我正在尽我最大的努力跟医生们一起开玩笑,我也在尽我最大的努力去自学。我在跟踪官方玩笑网站上的文档时遇到了问题。我在模拟模块部分。这与axios有关,但我一直在类型记录中发现错误,即mockImplementation不是属性(不管模拟是什么)。

我试着环顾四周,看看我的配置是否有问题,但我想不出来。

foo.ts

代码语言:javascript
复制
// foo.ts
export default function() {
    // some implementation;
  };

test.ts

代码语言:javascript
复制
import foo from '../src/foo';

// test.js
jest.mock('../src/foo'); // this happens automatically with automocking
foo.mockImplementation(() => 42);
foo();
console.log(foo())

这是我在mockImplementatin上遇到的错误

代码语言:javascript
复制
Property 'mockImplementation' does not exist on type '() => void'.ts(2339)

我所做的就是跟踪那些医生。我一直没问题,直到我到了部门。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-20 19:17:35

这个foo.ts

代码语言:javascript
复制
export default function() {
  return 1;
};

...can是这样被嘲笑的:

代码语言:javascript
复制
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导出,因此这一行:

代码语言:javascript
复制
const foo = mockedFooModule.default

...will将foo分配给正确类型的模拟默认导出。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58032756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档