Jest 测试框架 expect 和 匹配器 matcher 的设计原理解析

简介: Jest 测试框架 expect 和 匹配器 matcher 的设计原理解析

副标题:SAP Spartacus SSR 优化的单元测试分析之二 - 调用参数检测

源代码:

image.pngimage.png

注意观察 jest.Expect 的返回值:类型为 jest.JestMatchersShape

image.png


单步调试 expect 的调用过程:

image.png


从注释看,该函数为 spec 创建一个 expectation, 传入的 actual 为 spy 之后的版本。


image.png

构造一个 expectation,需要以上的参数。


image.png

紧接着调用 toHaveBeenCalledWith:

image.png

支持的所有方法,在 Chrome 开发者工具里能够看到:


image.png

toHaveBeenCalledWith


执行到这里来了:

image.png

所有可用的匹配器 matchers,都定义在文件 jasmine.js 里:

image.png

因此,toHaveBeenCalledWith 也算匹配器 matchers 之一。

image.png

构造一个匹配器实例:

image.png

调用匹配器工厂,构造一个匹配器实例:

image.png

其实例的运行代码如下图所示:

image.pngimage.png

比较实际被调用的参数,是否和期望被调用的参数完全一致。


进入数组的比较分支:

image.png

相关文章
|
2天前
|
XML 网络协议 Java
XML Web 服务技术解析:WSDL 与 SOAP 原理、应用案例一览
XML Web服务是基于WSDL、SOAP、RDF和RSS等标准的网络应用程序组件技术。WSDL描述服务接口和消息格式,SOAP用于结构化信息交换,RDF描述网络资源,RSS则用于发布网站更新。Web服务特点是自包含、自描述,基于开放协议,可重用且能连接现有软件。WSDL文档包含`types`、`message`、`portType`和`binding`元素,定义服务操作和协议。SOAP协议规定消息格式,通过HTTP等传输。
138 1
|
3天前
|
存储 安全 算法
Java语言中的集合框架:深入解析与应用
Java语言中的集合框架:深入解析与应用
|
3天前
|
存储 算法 Java
Java语言中的集合框架:深入解析与应用
Java语言中的集合框架:深入解析与应用
|
3天前
|
敏捷开发 Java 测试技术
深入理解自动化测试框架Selenium的设计理念与最佳实践
【5月更文挑战第31天】 在现代软件开发过程中,自动化测试是确保产品质量和加快交付速度的关键因素。Selenium作为一种广泛使用的自动化测试框架,它支持多种浏览器、操作系统和编程语言,极大地方便了测试人员编写和维护测试用例。本文将探讨Selenium的核心设计理念,包括其架构、组件和工作流程,并分享如何在实际项目中应用Selenium的最佳实践,以提高测试效率和准确性。通过分析真实案例,我们将展示Selenium如何帮助企业实现持续集成和持续部署(CI/CD)的目标,同时保证软件的稳定性和可靠性。
|
3天前
|
设计模式 敏捷开发 监控
深入理解自动化测试框架的设计原则与实践
【5月更文挑战第31天】 在软件开发的复杂多变环境中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将探讨自动化测试框架的设计原则,并结合实际案例分析如何构建一个高效、可扩展且易于维护的自动化测试框架。我们将透过不同的测试场景,从模块化、抽象化到数据驱动等设计模式,剖析框架构建的最佳实践。通过阅读本文,读者能够获得构建强大自动化测试框架的深刻见解,并应用于实际工作中,以提升软件测试效率和准确性。
4 0
|
4天前
|
机器学习/深度学习 敏捷开发 人工智能
深入理解软件测试中的自动化框架选择
【5月更文挑战第30天】 在快速迭代的软件开发过程中,高效的测试策略是确保产品质量的关键。本文将探讨自动化测试框架的选择对软件测试效率和质量的影响。通过分析不同类型项目的需求与特点,我们讨论如何根据团队的技术栈、项目周期和资源情况来选取合适的自动化测试框架。文章还将涉及持续集成环境下自动化测试框架的最佳实践,以及新兴测试技术对现有框架选择的潜在影响。
|
4天前
|
IDE Java 测试技术
Java中JUnit等测试框架的使用
Java中JUnit等测试框架的使用
|
4天前
|
敏捷开发 自然语言处理 JavaScript
探索自动化测试框架的选择标准与实践应用
【5月更文挑战第30天】 在软件开发的复杂多变环境中,自动化测试已成为确保产品质量和加快上市速度的关键。本文深入探讨了选择自动化测试框架时需考虑的标准,并通过具体案例分析如何在项目中成功实施。我们将覆盖框架选择过程中的性能、可靠性、易用性及可维护性四个核心要素,并结合业界最佳实践,提出一套实用的框架评估与应用流程。
|
4天前
|
Dart 前端开发 测试技术
移动应用开发的未来:跨平台框架与原生系统的融合深入理解软件测试中的持续集成与持续部署(CI/CD)
【5月更文挑战第30天】 在本文中,我们将深入探讨移动应用开发领域的最新趋势:跨平台开发框架与原生操作系统的融合。随着移动设备成为日常生活的核心,高效、灵活且性能卓越的应用程序需求日益增长。文章分析了当前主流的跨平台工具如React Native和Flutter,并探讨了它们如何与iOS和Android等原生系统相互作用,以及这种融合对开发者、用户和整个移动生态系统意味着什么。我们还将预测未来可能的技术发展,并提出相应的策略建议。
|
4天前
|
敏捷开发 监控 测试技术
深入探索自动化测试框架的选择与构建
【5月更文挑战第30天】在追求高效、可靠的软件发布周期中,自动化测试成为确保产品质量的关键。本文将探讨如何选择合适的自动化测试框架并指导构建一个符合项目需求的框架体系。我们将通过分析不同测试场景和需求,评估Selenium、Appium和JUnit等流行工具的优缺点,并提供策略性建议,以助读者构建出既灵活又稳定的自动化测试环境。
12 3

推荐镜像

更多