首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular Jest或Jasmine测试:如何正确侦测/模拟从测试类中调用的静态对象?

在Angular中,我们可以使用Jest或Jasmine进行测试。当我们需要侦测或模拟从测试类中调用的静态对象时,可以采取以下步骤:

  1. 首先,我们需要创建一个测试类,该类将包含我们要测试的方法。假设我们要测试的方法是myMethod,它调用了一个静态对象MyStaticObject
  2. 在测试类中,我们可以使用Jest或Jasmine提供的spyOn函数来侦测静态对象的调用。例如,使用Jasmine:
代码语言:txt
复制
import { MyStaticObject } from './my-static-object';

describe('MyClass', () => {
  it('should call MyStaticObject', () => {
    spyOn(MyStaticObject, 'myStaticMethod');
    
    // 调用包含对静态对象的调用的方法
    myMethod();
    
    // 断言静态对象的方法已被调用
    expect(MyStaticObject.myStaticMethod).toHaveBeenCalled();
  });
});

在上面的示例中,我们使用spyOn函数来侦测MyStaticObjectmyStaticMethod方法是否被调用。然后,我们调用包含对静态对象的调用的方法myMethod,并使用expect语句来断言静态对象的方法已被调用。

  1. 如果我们需要模拟静态对象的返回值,可以使用Jest或Jasmine提供的returnValue函数。例如,使用Jest:
代码语言:txt
复制
import { MyStaticObject } from './my-static-object';

describe('MyClass', () => {
  it('should call MyStaticObject and return a value', () => {
    const returnValue = 'mocked value';
    jest.spyOn(MyStaticObject, 'myStaticMethod').mockReturnValue(returnValue);
    
    // 调用包含对静态对象的调用的方法
    const result = myMethod();
    
    // 断言静态对象的方法已被调用
    expect(MyStaticObject.myStaticMethod).toHaveBeenCalled();
    
    // 断言返回值与模拟值相等
    expect(result).toEqual(returnValue);
  });
});

在上面的示例中,我们使用jest.spyOn函数来侦测MyStaticObjectmyStaticMethod方法是否被调用,并使用mockReturnValue函数来模拟返回值。然后,我们调用包含对静态对象的调用的方法myMethod,并使用expect语句来断言静态对象的方法已被调用,并且返回值与模拟值相等。

总结起来,我们可以使用Jest或Jasmine的spyOn函数来侦测静态对象的调用,并使用mockReturnValue函数来模拟返回值。这样,我们就可以正确地侦测/模拟从测试类中调用的静态对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前端测试体系建设与最佳实践总结

单元测试:是指对软件最小可测试单元进行检查和验证,通常指的是独立测试单个函数。 UI 测试:是对图形交互界面的测试。 集成测试:就是测试应用不同模块如何集成,如何一起工作,这和它名字一致。...Karma 能在真实浏览器测试,强大适配器,可配置其他单测框架,一般会配合 Mocha Jasmine 等一起使用。 每个框架都有自己优缺点,没有最好框架,只有最适合框架。...Augular 默认测试框架就是 Karma + Jasmine,而 React 默认测试框架是 Jest. Jest 被各种 React 应用推荐和使用。...我们测试点在加菜和减菜按钮事件是否被正确触发,当数量为 0 时,减号按钮和数量是否展示,数量不为 0 时,展示是否正确。...下面一起看一下如何处理这些情况。 LocalStorage 因为 Jest 环境是基于 jsdom, 所以我们需要去模拟 localstorage 行为。借鉴 Vue2.0 里数据侦测方法。

5.3K30
  • jest 单元测试改善老旧 Backbone.js 项目

    本文将尝试用一个重构实例来抛砖引玉,讲解如何对其应用较新 jest 测试框架,并用 ES6 class 等新手段升级 Backbone.View 视图组件和改善页面结构,希望能对类似项目的改善起到开启思路作用...通常 Backbone 项目也可以忽略文中涉及 react 部分。 升级测试框架 和之前文章例子相同,本次依然采用 Jest 作为测试框架。...由于 Jest 内置了 Jasmine2,所以这部分语法问题不大,基本可以无痛迁移。...$el.find('.multi').length).toEqual(0); }); 对方法调用测试 自然还是用 sinon 来做: it('应正确响应事件回调并加载子模板', function()...templates/card.html'; 因为测试环境没有 require.js 或者 webpack 加持,我们只能想办法将其劫持,并将正确结果注入对应测试模块; 要实现这一目的,就要用到

    3.5K10

    对 React 组件进行单元测试

    ,对于某些不容易构造或者不容易获取对象,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些对模块模拟,对 ajax 返回值模拟、对 timer 模拟,...一般使用 Enzyme mount shallow 方法,将目标组件转化为一个 ReactWrapper对象,并在测试调用其各种方法: import Enzyme,{ mount } from...; }); ... }); 调用组件“私有”方法 对于一些组件,如果希望在测试阶段调用到其一些内部方法,又不想对原组件改动过大,可以用instance()取得组件实例...一些模块可能耦合了对 window.xxx 这类全局对象引用,而完全去实例化这个对象可能又牵扯出很多其他问题,难以进行;此时可以见招拆招,只模拟一个最小化全局对象,保证测试进行: //fakeAppFacade.jsvar...sinon 中有一些模拟 XMLHttpRequest 请求方法, jest 也有一些第三方库解决 fetch 测试; 在我们项目中,根据实际用法,自己实现一个模拟请求响应: //FakeFetch.jsimport

    4.3K40

    React Native单元测试

    概述 所谓单元测试,就是对每个单元进行测试,一般针对是函数、单个组件,不涉及系统和集成,单元测试是软件测试基础测试,一个完备软件系统都会涉及到单元测试。...目前,Javascript测试工具很多,但是针对React测试主要使用是Facebook推出Jest框架,Jest是基于JasmineJavaScript测试框架,具有上手容易、快速、可靠特点...相比其他测试框架,Jest具有如下一些特点: 适应性:Jest是模块化、可扩展和可配置; 沙箱和快速:Jest虚拟化了JavaScript环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对...React 树进行快照别的序列化数值快速编写测试,提供快速更新用户体验; 支持异步代码测试:支持promises和async/await; 自动生成静态分析结果:不仅显示测试用例执行结果,也显示语句...npm install --save-dev jest //或者 yarn add --dev jest 如果你使用是react-native init命令行方式来创建RN项目,且RN版本在0.38

    89720

    前端单元测试Jest

    单元测试:在计算机编程,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计最小单位)来进行正确性检验测试工作。程序单元是应用最小可测试部件。...在过程化编程,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基(超)、抽象、或者派生(子类)方法。 集成测试,也叫组装测试联合测试。...前端测试框架有很多:mocha, jasmine, ava, testcafe, jest,他们都有各自擅长领域和特点,而我们采用jest框架具有如下一些特点: 适应性:Jest是模块化、可扩展和可配置...; 沙箱和快速:Jest虚拟化了JavaScript环境,能模拟浏览器,并且并行执行; 快照测试Jest能够对React 树进行快照别的序列化数值快速编写测试,提供快速更新用户体验; 支持异步代码测试...当有异步方式运行代码时候,Jest需要知道当前它测试代码是否已经完成,然后它才可以转移动另一个测试,也就是说,测试用例一定要在测试对象结束之后才能够运行。

    2.7K20

    分享7个专业级JavaScript测试库,提高你工作效率

    与其他库不同,Detox提供了一种方式来自动模拟真实用户行为并且测试应用在真实设备模拟器上表现。 首先,你需要在你项目中安装Detox和它命令行工具。...在这个文件,你可以定义Stryker应该如何运行你测试和创建变异。...它也是测试框架无关,所以你可以将它放入使用Jasmine、Mocha、Tape、Jest我们自己teenytest代码库。它在GitHub上有超过1000颗星标。...它设计原则是让你能够在单元测试轻松地模拟伪造(fake)依赖,从而让你能够更好地隔离和控制你测试环境。 首先,你需要在你项目中安装TestDouble。...', 'method2']); // 使模拟对象方法在调用时返回特定值 td.when(mockObject.method1()).thenReturn('hello'); // 现在,当你调用

    25920

    前端接入单元测试(Node+React)

    KarmaKarma 能在真实浏览器测试,强大适配器,可配置其他单测框架,一般会配合 Mocha Jasmine 等一起使用。每个框架都有自己优缺点,没有最好框架,只有最适合框架。...Augular 默认测试框架就是 Karma + Jasmine,Egg默认测试框架是Mocha,而 React 默认测试框架是 Jest。.../src/fetch.js'test('fetchPostsList回调函数应该能够被调用', async () => { expect.assertions(1); let mockFn =...、E2E测试 集成测试测试应用不同模块如何集成,如何一起工作。...E2E测试:端到端测试, 聚焦于用户和 web 之间交互,把 web 当作一个黑盒,站在用户角度,模拟用户操作,判断每次操作结果是否符合预期。

    3.3K30

    2021 年 Node.js 开发人员学习路线图

    正确使用 npm,可极大地降低软件包管理复杂度,非常便于解决应用开发依赖问题。...模拟测试(Mocking) 单元测试规模越小越好,并尽可能轻量级执行。但在一些情况下,测试对象存在对其他对象依赖。...例如,对于需要与域服务器 Web Service 通信对象,无法执行快速、轻量级测试,这时就需要 Mocking 测试。...运行 Mocking 测试不需要任何实际数据库,或是任何类型连接,只返回给出预期结果对象。Mocking 测试只使用一些基本对象模拟给出实际测试结果,因此可摆脱所有局限更快地运行测试。...推荐阅读:下面资料分别介绍了如何使用 Sinon 和 Jasmine 实现 Mocking 测试: Sinon https://stackabuse.com/using-mocks-for-testing-in-javascript-with-sinon-js

    2.4K20

    React 设计模式 0x8:测试

    学习如何轻松构建可伸缩 React 应用程序:测试 # 如何测试组件 测试在每个 Web 应用程序中都非常重要,即使在 React 也是如此,特别是在其组件方面。...# 渲染测试 渲染测试是一种测试,用于验证您组件是否正确渲染。 # 使用 Jest 进行功能测试 Jest测试 React 应用程序时非常流行测试库。...# 如何进行回归测试 回归测试是确保在进行更改之前测试所有内容仍然完好无损测试方法。当应用程序中发生更改时,应用程序某些内容很可能会出现故障。...模拟函数 使用 模拟函数 来侦测(查看)我们函数被调用情况,或者使用它来测试单个函数整个模块。...在 Jest 中有以下三种类型模拟函数: Jest.fn(用于模拟单个函数) Jest.mock(用于模拟整个模块) Jest.spyOn(用于查看函数调用情况) 更多信息请访问 https://jestjs.io

    1.8K10

    2017年前端框架、库、工具大比拼

    优点: 小而简单 良好文档易于学习 与大多数库和框架兼容 不扩展内置对象 可以在客户端服务器上使用 缺点: 有些方法只在ES2015及更高版本JavaScript可用。...单页应用程序 使用度 低 Angular是框架(MVC应用程序框架)列表第一个。...工具:代码分析 代码分析工具用于分析代码潜在错误偏离语法标准。一个未闭合括号未声明变量一定会被检测出。.../mochajs/mocha 当前版本 3.3.0 每月下载 500万 Mocha是一个JavaScript测试框架,可以在Node.js浏览器运行测试。...当前版本 2.6.0 每月下载 200万 Jasmine是一个行为驱动测试工具,可以在浏览器自动测试UI和交互。

    2.3K10

    盘点那些非常实用JavaScript测试框架

    测试:使用 test() 函数定义测试测试代码可以使用 QUnit 断言库对代码进行验证。...Jest 是一个轻量级测试框架,可以在浏览器和 Node.js 环境运行,支持快速单元测试和端到端测试。...Jest 主要特点包括: 自动模拟Jest 自动模拟了常见 JavaScript 对象,例如 fetch、XMLHttpRequest 等,可以方便测试异步代码。...Jasmine 主要特点包括: 简洁易用 API:Jasmine 提供了简洁易用 API,方便开发人员编写单元测试。...支持异步测试Jasmine 支持异步测试,方便开发人员编写异步代码测试用例。 可运行在多种环境:Jasmine 可运行在 Node.js、浏览器等多种环境,提供了灵活测试方案。

    2.1K40

    Jest + React Testing Library 单测总结

    1.2 测试框架和 UI 组件测试工具 而说起前端测试框架和工具,比较主流 JavaScript 测试框架有 JestJasmine、Mocha 等等,并且还有一些 UI 组件测试工具,比如 testing-libraray...1.3 组件单测须知 在开始进行组件单测时候,有几个因素我们需要考虑: 组件是否按照既定条件 / 逻辑进行渲染 组件事件回调是否正确 异步接口如何校验 异步执行完毕后操作如何校验 .........如果想要看如何安装 Jest,可以参考:Jest 上手。 Jest 常用配置项在根目录 jest.config.js ,常用配置可以参考:Jest 配置文件。...2.3 Jest Mock 在查看官方文档时候,Jest 匹配器还有一匹配器专门用来检查 Jest Mock 函数。...在组件单测,有的时候我们可能只关注一个函数是否被正确调用了,或者只想要某个函数返回值来支持该组件渲染逻辑是否正确,而并不关心这个函数本身逻辑。

    4.6K20

    2021年Node.js开发人员学习路线图

    正确使用 npm,可极大地降低软件包管理复杂度,非常便于解决应用开发依赖问题。...模拟测试(Mocking) 单元测试规模越小越好,并尽可能轻量级执行。但在一些情况下,测试对象存在对其他对象依赖。...例如,对于需要与域服务器 Web Service 通信对象,无法执行快速、轻量级测试,这时就需要 Mocking 测试。...运行 Mocking 测试不需要任何实际数据库,或是任何类型连接,只返回给出预期结果对象。Mocking 测试只使用一些基本对象模拟给出实际测试结果,因此可摆脱所有局限更快地运行测试。...推荐阅读: 下面资料分别介绍了如何使用 Sinon 和 Jasmine 实现 Mocking 测试: Sinon https://stackabuse.com/using-mocks-for-testing-in-javascript-with-sinon-js

    2.6K20

    实例入门 Vue.js 单元测试

    ,对于某些不容易构造或者不容易获取对象,用一个虚拟对象来创建以便测试测试方法 广义讲,以上 spy 和 stub 等,以及一些对模块模拟,对 ajax 返回值模拟、对 timer 模拟,...Vue.js 单元测试工具 2.1 Jest 不同于"传统"(其实也没出现几年) jasmine / Mocha / Chai 等前端测试框架;Jest使用更简单(也许就是这个单词本意“俏皮话...实际使用,适当在 package.json jest 字段独立 jest.config.js 里自定义配置一下,会得到更适合我们测试场景。...四个基础单词 编写单元测试语法通常非常简单;对于jest来说,由于其内部使用了 Jasmine 2 来进行测试,故其用例语法与 Jasmine 相同。...一般使用其 mount() shallowMount() 方法,将目标组件转化为一个 Wrapper 对象,并在测试调用其各种方法,例如: import { mount } from '@vue/

    2.9K20

    每日前端夜话(0x04):2018年JavaScript状态调查(

    Angular是一个基于TypeScript开源前端Web应用程序平台。 请注意,与以往不同是,调查过去版本还有一个关于AngularJS问题。...今天,程序需要知道自己如何获取数据以呈现在模板和组件。 这就产生了一系列数据提取和数据管理工具。 毫无疑问,Redux是这些工具中使用最广泛工具,其82%满意率证明了它成熟度。...GitHub 22k stars 令人愉快JavaScript测试Jest 随时间流行度 ? Jest 最受喜欢方面 ? Jest 最不受欢迎方面 ? 哪些工具与 Jest 一起使用?...GitHub 14k stars 适用于浏览器和node.js简单JavaScript测试框架 Jasmine 随时间流行度 ? Jasmine 最受喜欢方面 ?...测试未来可能包括更多在浏览器中进行自动化测试解决方案,像Cypress这样项目可能会包含在明年调查,我们可能会看到更多基于Puppeteer工具。

    1.6K20

    如何用 Karma,Jasmine,Webpack 测试 UI 组件系列(一)配置篇

    如何用 Karma,Jasmine,Webpack 测试 UI 组件系列 (一) 配置篇为什么要测试 个人经验来看,测试是防止软件缺陷最好方法。...生产开发当我们修改一小段代码,大部分开发人员会手动打开他们浏览器 POSTMAN来验证它是否仍然正确。 这种方法(手工测试)不仅低效,而且会隐藏一些你未发现缺陷。...一旦所有的测试通过,这些零散单元组合在一起也会运行很好,因为这些单元行为已经被独立验证过了。 本文介绍如何使用 Karma,Jasmine,Webpack 编写单元测试代码。...Webpack 和 Babel 安装和配置 Babel和Webpack根据使用到ECMAScript新特性决定是否配置,我配置如下 Jasmine 断言库引入 编写测试用例 因为我司在生成还在使用...Angular 1.X 版本,所以测试用例编写也以此为例,需要安装angular angular-mocks。

    2K150

    前端单元测试,更进一步

    前端测试@2022 如果 2014 年 Jest 第一个版本发布开始计算,前端开发领域工程化单元测试能力已经发展了八年有余。...Jest 集成了 Jasmine 等以往各种被证明有效单元测试框架和断言等工具,也可以用来完成包含外部接口服务集成测试等。...在测试分层金字塔模型,最终还需要立足真实业务项目的 UI 测试,也就是终端用户( QA 测试人员)到终端设备 E2E(end to end) 测试。...pre-commit 等开发流程,也容易重蹈早期 Jasmine 等基于浏览器页面单测用例覆辙 -- 编写简单但很容易过时失效。...,甚至可以在 Playwright 调用 Storybook 服务后再编写自动化测试 -- 后者这里不展开讨论了;总之,测试工具发展,给了前端开发者更直观编写测试用例手段,最终也更好地保证了前端项目的开发质量

    1.1K00

    QQ音乐商业化Web团队前端工程化实践总结

    OOCSS(Object Oriented CSS)即面向对象CSS,旨在编写高可复用、低耦合和高扩展CSS代码,有两个主要原则,它们都是用来规定应该把什么属性定义在什么样式。...测试 在软件生命周期中,不同测试阶段,针对测试问题是不一样: 单元测试:确保每个组件/模块正常工作 集成测试:在单元测试基础上,确保组装成模块、子系统系统过程各部分正常合作 系统测试:在集成测试基础上...前端如何做单元测试测试环境 和后端不同,前端有运行环境差异性,需要考虑兼容性,如何模拟浏览器环境,如何支持到BOM API调用,这些都是需要考虑。...测试工具 测试框架就是运行测试用例工具,常见有Macha、JasmineJest、AVA等等。 断言库主要提供语义化方法,用于对参与测试值做各种各样判断。...UI组件 Jest支持对React App测试,可以采用截图测试(Snapshot Testing)、模拟DOM操作(DOM Testing)等方法详见文档。

    4.3K112
    领券