用笑话模拟第 3 方库构造函数

2024-01-11

我正在用玩笑编写单元测试,并且必须测试一个从第三方库调用构造函数的函数(测试的目标是检查调用是否使用了良好的参数)

第 3 方库是 Popper.js

我做了一个jest.spyOn(Popper.prototype, 'constructor').mockImplementation( () => {})但它抛出来自构造函数内部的错误(因此它不是被调用的模拟函数)

这是我的测试代码

  import Popper from 'popper.js';

  it('should call Popper constructor with correct argument', () => {
    // Arrange
    jest.mockImplementation(Popper.prototype, 'constructor', () => {});
    const refElem = document.createElement('div');
    const popElem = document.createElement('div');
    const placement = 'top';
    const container = document.createElement('div');

    // Act
    popup.create(refElem, popElem, placement, container);

    // Assert
    expect(Popper.prototype.constructor).toHaveBeenCalled();

  }); 

我终于设法为此做点什么。 我手动创建了一个模拟模块(因为jest.genmockfromModule似乎不起作用)

jest.mock ('popper.js', () =>
{
  class Popper {
    constructor(a,b,c){
      this.spy(a,b,c);
    }
    spy(a,b,c) {}
    destroy() {}
  }
  return Popper;
});

当您想知道是否已使用正确的参数调用构造函数时,可以使用间谍函数进行“监视”

(这里你有 3 个参数,因为popper.js)

因此我在我的规范文件中像这样使用它:

import Popper from 'popper.js';
 ...
jest.spyOn(Popper.prototype, 'spy');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用笑话模拟第 3 方库构造函数 的相关文章

随机推荐

  • GRPC服务发现

    给定一个地址GRPC http www grpc io 服务于 例如 ipv4 127 0 0 1 25000 是否有任何标准化查询或工具可以用来发现服务能够接收哪些 GRPC 请求 例如我正在寻找类似的东西 magic grpc serv
  • 使用 TCPDF 将现有 PDF 与动态生成的 PDF 合并

    我正在使用 TCPDF 生成 PDF 文档 我的要求是在动态生成的PDF的最后一页合并现有的PDF内容 到目前为止 解决您问题的最佳方法是使用FPDI https github com Setasign FPDI https github
  • 何时使用:Java 8+ 接口默认方法与抽象方法

    Java 8 允许默认实现接口中的方法 称为默认方法 http java dzone com articles introduction default methods 我很困惑什么时候会使用那种interface default meth
  • Spring Batch - 同时执行作业的多个实例

    我有一个澄清 我们是否可以同时运行一个作业的多个实例 目前 我们在任何给定时间都有一个作业实例 如果可能的话 请告诉我该怎么做 是的你可以 Spring Batch 根据 JobParameters 来区分作业 因此 如果您始终将不同的 J
  • Firebase 身份验证在 iOS 上使用 Capacitor Ionic

    我正在使用 Angular Fire 在 Ionic Capacitor 上进行 Firebase 身份验证 它在网络和 Android 上运行良好 但在 IOS 上不行 当我检查应用程序网络活动时 我意识到应用程序能够从 firebase
  • .Net UpdatePanel 和 javascript 已禁用

    这可能听起来 或者实际上是 一个愚蠢的问题 但我需要找到最好的方法来继续我正在进行的项目 我有一个多页网络表单 使用多视图控件 该多视图位于更新面板控件中 到目前为止一切都运行良好 我的问题是关于禁用 JavaScript 的用户 我注意到
  • Datagrid 中不同组合框的不同值

    请耐心等待 因为我是 WPF 的新手 我有一个包含组合框的数据网格
  • Pandas groupby 和聚合输出应包括所有原始列(包括未聚合的列)

    我有以下数据框并想要 记录分组依据month Sum QTY SOLDand NET AMT每个独特的UPC ID 每月 将其余列也包含在结果数据框中 我认为我可以做到这一点的方法是创建一个month列来聚合D DATES 然后求和QTY
  • 在 C# 字符串中转义双引号

    我试图逃避 and 在我的字符串中是这样的 text Replace Replace 但结果为text arash moeen 结果是 arash moeen 我怎样才能解决这个问题 只需使用 对于逐字字符串 text Replace th
  • 修补 nant 0.91 以使用 mono 4.0

    The Nant http nant sourceforge net 不支持单声道4 但幸运的是有 我下载了补丁 我也下载了source http nant sourceforge net nightly latest 我解压源代码并将补丁
  • 加载 FXML 时将参数传递给控制器​​[重复]

    这个问题在这里已经有答案了 我有一个登录屏幕 我想将登录 ID 从 LoginController 传递到 MainController 这样我就可以访问一些功能来更改密码等 我像这样加载控制器 FXMLLoader fxmlLoader
  • ValueError:不支持的格式字符'

    我从这里得到了以下大部分代码 使用python脚本生成pdf latex https stackoverflow com questions 8085520 generating pdf latex with python script u
  • 基于 Git 的内容管理? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Ruby CMS 或插件 可以提供和编辑位于 Git 存储库中的内容 我厌倦了将我的内容放在数据库中 用户 设置 评论 都
  • 致命错误:找不到类“PHPExcel_Shared_String”

    我已将 PHPExcel 用于我的 codeigniter 应用程序 它在本地主机中运行良好 但是当我将其托管到服务器时 出现以下错误 致命错误 在 xx xx xx 中找不到类 PHPExcel Shared String Third p
  • 为什么我的规则不能用简单的代数方程求解 X?

    我是 Prolog 新手 所以请保持温柔 这是我的规则 solve X A B A is 7 X 2 B is 3 X 4 显然 这里的正确答案是6 5 如果我把它交给 Prolog 它会证实 solve 6 5 yes 然而 如果我要求
  • Python解析日期字符串为date

    我正在尝试在 Python 中解析日期时间字符串 输入值的形式为 February 19 1989 到目前为止我一直在努力 datetime datetime strptime February 19 1989 B d y 但我总是出错 解
  • 可以在不损失重要性的情况下转换为二进制并返回十进制的最高有效十进制数字精度是 6 还是 7.225?

    我遇到过两种不同的浮点数精度公式 N 1 log10 2 6 decimal digits Single precision and N log10 2 7 225 decimal digits Single precision Where
  • Netbeans:编译时将文本文件移动到 dist 文件夹中

    我有一个文本文件 假设textfile txt 存储在项目文件夹中网豆 7 3 e g project folder textfile txt src package package subpackage MyClass java 当我编译
  • 在构造函数中初始化静态最终字段

    public class A private static final int x public A x 5 final意味着变量只能分配一次 在构造函数中 static意味着它是一个类实例 我不明白为什么这会被禁止 这些关键词在哪里互相干
  • 用笑话模拟第 3 方库构造函数

    我正在用玩笑编写单元测试 并且必须测试一个从第三方库调用构造函数的函数 测试的目标是检查调用是否使用了良好的参数 第 3 方库是 Popper js 我做了一个jest spyOn Popper prototype constructor