带参数的 Jest Mock Promise

2024-01-23

这是我尝试在 Jest 中编写单元测试的方法

async function getParameter(parameter: string,
  withDecryption: boolean = false): Promise<String> {

  const params = {
    Name: parameter,
    WithDecryption: withDecryption,
  };
  try {
    const request = await       ssmClient.getParameter(params).promise();

    return request.Parameter.Value;
  } catch (err) {
    logger.error(`Error ${err}`);
    throw Error(err);
  }
}

测试方法 :

test('getParameterFromSystemManager', async () => {
  const mockedResponseData = {
    Parameter: {
      Value: 'parameterValue',
    },
  };

 ssmClient.getParameter(params).promise = jest.fn();

 ssmClient.getParameter(params).promise.mockImplementation(() => Promise.resolve(mockedResponseData));

 const data = 
 await SSMParameters.getParameterFromSystemManager('testurl', false, 
 'Test', 'elastic');
 expect(data).toEqual(mockedResponseData.Parameter.Value);
 expect(ssmClient.getParameter).toHaveBeenCalledTimes(1);
});

我收到错误:

类型错误: ssmClient.getParameter(...).promise.mockImplementation 不是函数

我们如何在 Jest 中模拟此类 .promise() 函数?


之所以.promise.mockImplementation不是一个函数,是调用getParameter(...)返回一个新的实例/对象.promise().

所以在你的第一行:ssmClient.getParameter(params).promise = jest.fn();你只需设置该实例jest.fn().

在第二行中,您实际上正在调用.mockImplementation()在一个全新的实例上。

相反,你将不得不嘲笑getParameter()确保它每次都会返回你的模拟。

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

带参数的 Jest Mock Promise 的相关文章

随机推荐

  • 使用 Json.Net 序列化 NameValueCollection 的自定义子类

    我有以下类 但尝试序列化为 Json 失败 class HL7 NameValueCollection public List
  • 角度,将范围传递给函数(将范围作为变量传递?)

    我试图将作用域传递给函数 但似乎无法让它正常工作 这就是我所拥有的 ng click clickFunction scope1 the function scope clickFunction function passedScope pa
  • `tf.set_random_seed()` 相当于种子操作?

    标题几乎说明了一切 你知道是否存在相当于tf set random seed 用于张量流中的操作种子 我试图在定义为两个不同图形的两个精确神经网络处初始化完全相同的权重 所以我想知道是否有一种方法可以为所有操作全局设置操作种子 而不必为每个
  • 将特殊字符作为消息发送;

    我正在运行 Kannel 将其用作 SMS 网关 但我刚刚意识到手机上没有收到应有的一些特殊符号 和 作为三角形发送 我该如何解决这个问题 可能是字符集问题 短信通常使用 GSM7 字符集接收 并且您提供的字符具有不同的 GSM7 数字代码
  • Conda:创建虚拟环境

    我正在尝试创建一个虚拟环境 我已按照两者的步骤进行操作Conda https conda io docs user guide tasks manage environments html and Medium https medium c
  • gulp-mocha 如何传​​递编译器标志?

    我正在尝试使用gulp mocha 模块 https github com sindresorhus gulp mocha但无法找出传递编译器标志的好方法 有没有办法将其包含在我的 gulp 任务中 也许在一个单独的管道中 从命令行运行摩卡
  • RequireJs 优化器忽略插件

    当我使用优化器时 我想忽略 require js 插件的使用 define css styles css 这总是给我这个错误Cannot read property normalize of undefined 我已将此选项设置为需要优化器
  • 您对 C# 缩小有什么建议吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要缩小一些 Silverlight cs 和 xmal 文件中的一些 C 代码 对于维护一个代码库和
  • Java 构建路径

    我有一个关于在代码运行时更改构建路径的快速问题 例如 我有一个类 它从互联网下载 jar 文件 然后将其放入与运行代码相同的目录中 如果可能的话 如何将 jar 加载到构建路径中以访问 jar 文件中的类 一些建议的修改 评论 去除jar
  • 如何判断Windows上是否安装了Java虚拟机?

    使用代码 如何确定 Windows 中是否安装了 Java VM 及其版本 假设您希望通过批处理文件以编程方式确定这一点 您可以使用reg exe工具 安装在windows system32 这个工具的烦人之处在于 无法让它仅返回退出代码
  • 编译curl后路径问题

    我使用以下命令克隆存储库后编译了curl buildconf configure with libssh2 make sudo make install 但是 在 sudo make install 之后 如果 I run curl V 我
  • Mysql 中的行级锁定

    我的表中有 5 行 1 到 5 我想要第 2 行锁定以进行某些更新 同时如果有人尝试更新第 4 行 那么他应该能够更新 我正在使用下面的代码尝试此操作 但我觉得它将锁定放在表级别而不是行级别 第一节 START TRANSACTION SE
  • iOS 导航栏项目图像大小

    我想定制我的NavigationBar按钮并使用我自己的图像 问题是尺寸应该是多少 我发现按钮大小应该是40 40 所以视网膜图像应该是80 80 这些是尺寸文档 https developer apple com ios human in
  • 如何使用 Pig 从列中解析 JSON 字符串

    我有 tsv 日志文件 其中一列由 json 字符串填充 我想用以下内容解析该列JsonLoader in a Pig脚本 我看到很多例子JsonLoader用于每行只有一个 json 字符串的情况 我还有其他专栏想要跳过 但我不知道该怎么
  • 我们如何设置ContentRootPath和WebRootPath?

    当我们从 IIS 运行我们的应用程序时 我们最终得到以下 ContentRoot 和 WebRoot ContentRoot C MyApp wwwroot WebRoot C MyApp wwwroot wwwroot 这是我们的设置方式
  • CSS 未在 Heroku 中加载

    我将应用程序部署到 Heroku 但仅加载资产 图像 CSS 文件 尤其是包含 90 CSS 的 custom css 未加载 我在本地预编译了资产并将它们推送到 Heroku 但没有成功 仅加载图像 而不加载 custom css 文件
  • p:dataTable 中的 h:selectOneMenu 未提交其值

    我有关于 selectOneMenu 和设置值的问题 我有一张对象示例光盘 其中包含 ID 文本和List
  • 在 C# Windows 窗体中预览 .doc、.docx [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在用 C 开发一个 Windows 窗体项目 现在我可以使用 ToolBox 中的 WebBrow
  • 如何比较车把中的值?

    我想根据条件显示不同的 HTML 它似乎没有比较这两个值 并且总是显示第一个变体 如何将预定义值与 JSON 中的原始值进行比较 以便它可以正确执行 each this each visits div class row if variab
  • 带参数的 Jest Mock Promise

    这是我尝试在 Jest 中编写单元测试的方法 async function getParameter parameter string withDecryption boolean false Promise