Typescript 期望 mockImplementation 为所有方法和属性提供模拟

2024-04-09

我正在使用 typescript + jest,并且在创建模拟实现时遇到了一些类型检查问题。举个例子,我想嘲笑Credentials对象从aws-sdk:

import { Credentials } from "aws-sdk";

jest.mock("aws-sdk");

const CredentialsMock = mocked(Credentials);

describe("Foo test", () => {
  beforeAll(() => {
    CredentialsMock.mockImplementation(() => { /*** <--- Type checking fails here ***/
      return {
        get: jest.fn()
      }
    });
  });
});

我遇到的问题是类型检查器希望我为每个方法/属性提供模拟Credentials类型,当我只想模拟单个方法时。具体错误是:

TS2345:类型参数 '() => { get: jest.Mock; }' 不可分配给类型为“(accessKeyId: string, SecretAccessKey: string, sessionToken?: string | undefined) => Credentials”的参数。

输入 '{ get: Mock; }' 缺少“Credentials”类型中的以下属性:getPromise、needsRefresh、refresh、refreshPromise 等 5 个属性。

有没有办法让打字稿在这里快乐?


我发现让打字稿满意的一种方法是,当提供与原始参数或返回值不同的模拟实现时,将模拟实例包装在类型断言 https://www.typescriptlang.org/docs/handbook/basic-types.html#type-assertions。假如说mocked(Credentials)在你的例子中返回一个jest.MockInstance,类型断言将如下所示:

    (CredentialsMock as jest.MockInstance<any, any>).mockImplementation(() => {
      return {
        get: jest.fn()
      }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript 期望 mockImplementation 为所有方法和属性提供模拟 的相关文章

随机推荐

  • 如何创建表格颤动?

    我有三个列表 我必须生成表格 这些来自用户输入的列表 px 0 1 0 2 0 3 x 0 1 2 这个第三个列表是第一个第二个列表的乘法 Mutiply 0 0 2 0 6 我想生成表格 列表的长度来自用户输入所以 我如何生成表 简单的方
  • Logback-android:日志未写入文件

    尝试使用 logback android 重定向日志消息 以便可以将消息保存在文件中 但是 它没有保存到文件中 这是我的 logback xml 文件配置 它存储在src 主要 资产在我的 Android Studio 中
  • java 的 == 行为不一致

    考虑这段代码 class test public static void main String args test inst test new test int i1 2000 int i2 2000 int i3 2 int i4 2
  • 我无法删除我的 VPC

    我想删除我的一个 VPC 但当我尝试删除时 出现此错误 我们无法删除以下 VPC vpc 8737bde2 10 100 0 0 16 Khoi VPC vpc vpc 8737bde2 具有依赖关系 无法删除 服务 AmazonEC2 状
  • 日期时间比较忽略种类?

    DateTime d1 new DateTime 2015 1 1 0 0 0 DateTimeKind Utc DateTime d2 new DateTime 2015 1 1 0 0 0 DateTimeKind Local Cons
  • SqlException 因为子查询返回超过 1 个值

    我有以下 LINQ 查询 用于构造一个结构以填充到 JavaScript 网格库中 这与本示例无关 但我想我仍然会解释这一点 var output myObjects Select p gt new RowModel ID p LeadUI
  • React hook 渲染额外的时间

    我的代码导致了意外数量的重新渲染 function App const isOn setIsOn useState false const timer setTimer useState 0 console log re rendered
  • (递归)SQL 查询而不是循环

    我正在寻找一个查询来获取以下输出 Id Number 1 241100 2 241110 2 241111 2 241112 2 241113 2 241114 2 241115 表结构 Id Number From To 1 241100
  • 如何在闪亮的应用程序中获取父 URL

    我在我的网站中嵌入了带有 iframe 的 Shiny 应用程序 现在我正在尝试保护我的 Shiny 应用程序 我希望只能在我的网站中访问 iframe 而不是直接通过其 URL 访问 为此 我尝试获取包含我的 Shiny 应用程序内的 i
  • 为什么 fetch 返回承诺待处理?

    我正在使用 fetch 来获取数据 但它始终返回待处理的承诺 我看过很多关于这个问题的帖子 并尝试了所有的可能性 但没有解决我的问题 我想知道为什么 fetch 返回待定状态的承诺 简而言之 fetch 返回待定状态的可能情况是什么 我的一
  • Python - pandas - 将系列附加到空白数据帧中

    假设我有两个 python 中的 pandas 系列 import pandas as pd h pd Series g 4 2 1 1 g pd Series 1 6 5 4 abc 我可以仅使用 h 创建一个 DataFrame 然后将
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • SQL Server 中的 Json 转义 unicode

    我得到了带有转义 unicode 符号的 Json 字符串 u041e u043f u043e u0440 u0430 u0448 u0430 u0440 u043e u0432 u0430 u044f VW GOLF 我知道后面的4位数字
  • 在sql server中使用货币$格式?

    我在 mysql 数据库中有数据 例如645 000我需要将其格式化以包含货币符号 例如 645 000 我怎样才能在 SQL 中实现这一点 您不需要也不应该在 SQL Server 中对其进行格式化 相反 您的应用程序需要针对 UI 对其
  • 滚动列表视图导致按钮不可见

    我有一个列表视图 其中列表的每一行都包含一个按钮 基于一个字段 我想让这个按钮不可见 我的适配器内的 getView 方法如下所示 public View getView int position View convertView View
  • 线程“main”中的异常 java.lang.NoClassDefFoundError: org/sqlite/NativeDB

    我正在尝试在 mac 上运行 sqlite 的一个简单示例 我非常确定该代码在 Windows 上运行良好 但在 Mac 上不行 如果有人能帮助我解决这个问题 我真的很感激 代码在 Eclipse 中运行 我在项目中添加了 sqlite j
  • git:将文件从另一个分支签出到当前分支(不要将 HEAD 切换到另一个分支)

    我想将另一个分支中存在的文件的不同版本加载到当前分支中 git help checkout says DESCRIPTION Updates files in the working tree to match the version in
  • UpdatePanel 中的 ASP.NET FileUpload - 仍然无法正常工作

    尝试在 NET 4 5 C Web 应用程序的 updatepanel 中使用 FileUpload 或 AsyncFileUpload 控件 我尝试在母版页中使用标准 Scriptmanager 或 ToolKitScriptManage
  • 子窗口中的 ListView 触发立即关闭,或在滚动时触发

    我有一个相当奇怪的场景 如果我启动一个包含ListView如果有一个中等复杂的委托和足够的项目来轻松超出可见区域 整个子窗口将在启动时立即关闭 降低委托的复杂性将允许窗口打开 但随后快速滚动窗口ListView会强行关闭它 This SSC
  • Typescript 期望 mockImplementation 为所有方法和属性提供模拟

    我正在使用 typescript jest 并且在创建模拟实现时遇到了一些类型检查问题 举个例子 我想嘲笑Credentials对象从aws sdk import Credentials from aws sdk jest mock aws