首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点ts-jest spyOn方法与重载不匹配

节点ts-jest spyOn方法与重载不匹配
EN

Stack Overflow用户
提问于 2021-06-10 03:07:44
回答 1查看 69关注 0票数 0

我正在尝试结合使用Jest和ts-jest来为nodeJS服务器编写单元测试。我有一些与下面非常相似的设置:

impl.ts

代码语言:javascript
复制
export const dependency = () => {}

index.ts

代码语言:javascript
复制
import { dependency } from './impl.ts';
export { dependency };

consumer.ts

代码语言:javascript
复制
import { dependency } from '../impl' <- importing from index.ts
export const consumer = () => {
  try {
   dependecy();
   return true;
  } catch (error) {
    return false;
  }
}

consumer.test.ts

代码语言:javascript
复制
import * as dependencies from '../impl'
import { consumer } from './consumer'
const mockDependency = jest.spyOn(dependencies, 'depenedncy');
describe('function consumer', function () {
  beforeEach(function () {
     mockDependency.mockReturnValueOnce(false);
  });

  test('should return true', () => {});
})

这只是一段简单的代码,但实际的导出/导入/测试文件遵循类似的结构。我得到了以下几行的打字错误:

TS2769: No overload matches this call.具体地说,被监视的方法不是依赖项的导入重载的一部分,所以我不能将其存根出来。我在一个不同的测试文件中做了同样的事情,没有任何问题。有人知道如何解决打字问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-10 03:31:24

问题被证明是依赖函数本身的类型问题。返回值类型不正确,这就是导致打字错误的原因。本质上,我有这样的想法:

代码语言:javascript
复制
export const dependency: Handler = () => {
  return () => {} <- is of type Handler
}

而不是这样

代码语言:javascript
复制
export const dependency = (): Handler => {
  return () => {} <- is of type Handler
}

愚蠢的错误,希望它能在未来帮助其他人。我的结论是,如果你有一个没有意义的类型错误,一定要检查所有相关变量的类型。

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

https://stackoverflow.com/questions/67910312

复制
相关文章

相似问题

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