Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JEST中模拟静态方法

在JEST中模拟静态方法

提问于 2018-06-06 01:36:12
回答 1关注 0查看 256

我很难用玩笑来模拟静态的方法。Immagine有一个具有静态方法的A类:

代码语言:txt
AI代码解释
复制
export default class A {
  f() {
    return 'a.f()'
  }

  static staticF () {
    return 'A.staticF()'
  }
}

以及进口A的B级

代码语言:txt
AI代码解释
复制
import A from './a'

export default class B {
  g() {
    const a = new A()
    return a.f()  
  }

  gCallsStaticF() {
    return A.staticF()
  }
}

现在您想要模拟A。很容易模拟f():

代码语言:txt
AI代码解释
复制
import A from '../src/a'
import B from '../src/b'

jest.mock('../src/a', () => {
  return jest.fn().mockImplementation(() => {
    return { f: () => { return 'mockedA.f()'} }
  })
})

describe('Wallet', () => {
  it('should work', () => {
    const b = new B()
    const result = b.g()
    console.log(result) // prints 'mockedA.f()'
  })
})

然而,我无法资助任何关于如何模拟A.StaticF的文档。这个是可能的吗?

回答 1

砸蛋大叔

发布于 2018-06-06 11:19:32

我相信可以使用与模拟非静态方法相同的过程:

代码语言:txt
AI代码解释
复制
jest.mock('../src/a', () => { 
  return jest.fn().mockImplementation(() => {
    return { staticF: () => {
      return 'mockedA.staticF()'
      }
    }
  }) 
})

将用一个方法返回对象-staticF

代码语言:txt
AI代码解释
复制
const b = new B()
B.staticF() === b.staticF() // should be true, right?
和开发者交流更多问题细节吧,去 写回答
相关文章
在 ts + Jest 单元测试中 debugging
温馨提示:因微信中外链都无法点击,请通过文末的 “阅读原文” 到技术博客中完整查阅版;
JSCON简时空
2020/03/02
4.3K0
在 COMSOL 中模拟瞬态加热的方法
COMSOL Multiphysics®软件经常被用来模拟固体的瞬态加热。瞬态加热模型很容易建立和求解,但它们在求解时也不是没有困难。例如,对瞬态加热结果的插值甚至会使高级 COMSOL®用户感到困惑。在这篇文章中,我们将探讨一个简单的瞬态加热问题的模型,并利用它来深入了解这些细微差别。
CAE学习笔记
2023/02/13
2.3K0
在 COMSOL 中模拟瞬态加热的方法
为什么在静态方法中不能使用this
在JVM的运行时数据区中有个虚拟机栈(或Java栈),在它的里面是由栈帧'叠加'而成.栈帧由局部变量表,操作数栈,动态连接,方法返回地址等组成.
书唐瑞
2022/06/02
2.3K0
为什么在静态方法中不能使用this
在静态方法中应用spring注入的类
最近在一次项目的重构中,原项目需要在静态方法中调用service,现在需要更换框架,service需要自动注入,无法再静态方法中调用
二十三年蝉
2018/08/27
3K0
学习笔记——在vue中如何配置Jest(一)
  最近在搞Jest单元测试,如何在vue中安装和使用jest我就不说了,前一篇文章简单的说了一下在使用jest时遇到的一些问题,但是我觉得并没有真正的解决的很好。后面会在学习过程中更新前面的那篇文章,加入后续遇到的问题以及解决问题的方法,持续的做一个记录。
zaking
2019/04/09
2K0
学习笔记——在vue中如何配置Jest(一)
学习笔记——在vue中如何配置Jest(一)
  最近在搞Jest单元测试,如何在vue中安装和使用jest我就不说了,前一篇文章简单的说了一下在使用jest时遇到的一些问题,但是我觉得并没有真正的解决的很好。后面会在学习过程中更新前面的那篇文章,加入后续遇到的问题以及解决问题的方法,持续的做一个记录。
全栈程序员站长
2022/07/21
2.2K0
学习笔记——在vue中如何配置Jest(一)
在C++中模拟JAVA内部类的方法
有时候我们需要把一批互相关联的API用不同的类提供给用户,以便简化每个类的使用难度。但是这样这些类之间的数据共享就成了问题。JAVA的内部类可以自由的访问外围类的所有数据,所以很时候做这的工作,而如果C++也这样做,就变成要增加很多setter和getter。但是,也可以用以下方法模拟实现: 首先,你的内部类头文件一般是被外围类所#include的,所以需要在内部类的声明前增加“前置声明”: namespace outerspace{ class OuterClass; } 然后,再设置一个指向外部类的指针
韩伟
2018/03/05
2.4K0
在C++中模拟JAVA内部类的方法
类中的静态/非静态方法
 C#的类中可以包含两种方法:静态方法和非静态方法。   使用了static 修饰符的方法为静态方法,反之荝是非静态方法。   静态方琺是①種 特殊的成園方琺,它不属纡类的某一个具体的实唎,而是属于类本裑。葰以对静态方法不需要首先创建一个类哋实例,而是采用类名.静态方法的格式 。   1.static方法是类中的一个成園方法,属于整个类,即不用創建任何对象也可以直接调用!   static内部只能出现static变量和其他static方法!洏且static方法中还不能使用this....等关键字..因为它湜属于整个类!   2.静态方法效率上要比实例化高,静态方法的缺点是不洎动进垳销毁,洏实例化的则可以做销毁。   3.静态方法和静态变糧创建后始终使用哃一赽内存,而使用實例的方式会创建多个内存.   4.C#中哋方法有两种:实例方法,靜态方法.   类的方法笩码只有一份,它们的生命周期和类是一致哋.实例方法是通过对象名调用的,静态方法与类关联而不是与对象名关联.   5.哪么在程序狆什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据,比如连接字符串,配置信息等,当满足仩面所 説的两点时,进行一次渎取,以后就可以方便的使鼡孒,同溡也节约了托管资源,因为对于静态成员,一个静忲牸葮只标識一個存储位置。对一个类无论创踺了多少 个实例,它的静态牸段永远都只有一个副本(副本我理解为只有一块内存   静态成员存在于内存,悱静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因潙静态成员存在于禸存,所以悱靜态成员可以直接访问类中静态的成员. 公用的处理函数,使用静态方法应该没有问趧..牵涉到数据共享,静忲变量的函数要多考虑...静态变量要小心使用.. 靜态方法   厡理就是共享代码段   珙啍代码段不会产生任何问题   因为代犸段都是给CPU作为"读取"用的,除非你进行恶意"俢改"运行时的代码段   所姒静态方琺是可以放心使用的   静态變量   原理就是共享数据段   同上 只要没有琎行"写入"操莋就不会产生问题 但是数据通常都是用于读和写 所以静态变糧要注意使用   下面是一个使用静态方法的例子 class Class1
DougWang
2020/02/18
1.8K0
详解Java中静态方法
定义: 在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。
用户7886150
2020/12/07
9300
Jest中Mock网络请求
最近需要将一个比较老的库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦的就是测试网络请求,所以记录一下Mock掉Axios发起网络请求的一些方式。初学两天的小白,如有问题还请指出。
WindRunnerMax
2021/09/15
3.5K0
Java中静态方法不能调用非静态方法的原因
如图,是Java中静态代码和实例对象互相调用的规则,我们接下来就讲讲为什么在Java中静态方法不可以调用非静态代码呢。
浩Coding
2019/07/03
6K5
Jest中Mock网络请求
最近需要将一个比较老的库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦的就是测试网络请求,所以记录一下Mock掉Axios发起网络请求的一些方式。初学两天的小白,如有问题还请指出。
冬夜先生
2021/09/13
2.8K0
在MongoDB中模拟Auto Increment
MySQL用户多半都有Auto Increment情结,不过MongoDB缺省并没有实现,所以需要模拟一下,编程语言以PHP为例,代码大致如下所示:
LA0WAN9
2021/12/14
1.1K0
python中的静态方法和类方法
静态方法和类方法在python2.2中被引用,经典类和新式类都可以使用。同时,一对内建函数:staticmethod和classmethod被引入,用来转化类中某一方法为这两种方法之一。
全栈程序员站长
2022/07/09
1.8K0
关于Java中静态字段与静态方法的讨论
如果将一个字段定义为static,每个类只有这样一个的字段,而对于非静态的实例字段,每个对象都有自己的一个副本,例如:,假设需要给每个员工赋予唯一的标识码,这里给Employee类添加id和一个静态字段nextId:
秋名山码神
2022/12/13
8760
Typecho 在Apache中开启伪静态
然后修改/etc/apache2/sites-available/中默认的配置文件,搜索其中的AllowOverride None,全部改为AllowOverride All,然后重启Apache,service apache2 restart。
用户2657851
2020/03/04
1.6K0
详解java中静态方法有哪些_java类中的静态变量
定义: 在类中使用static修饰的静态方法会随着类的定义而被分配和装载入内存中;而非静态方法属于对象的具体实例,只有在类的对象创建时在对象的内存中才有这个方法的代码段。
全栈程序员站长
2022/11/01
1.7K0
Python中类的静态方法、类方法及实例方法
经过测试可以发现 实例属性需要通过实例对象来访问,类属性通过类来访问,但在测验中 stu1.school 实例对象也能访问类属性,为什么呢?
忆想不到的晖
2021/04/04
3.4K0
Python中类的静态方法、类方法及实例方法
Python中类的静态方法、类方法及实例方法
经过测试可以发现 实例属性需要通过实例对象来访问,类属性通过类来访问,但在测验中 stu1.school 实例对象也能访问类属性,为什么呢?
ZackSock
2021/04/13
3.5K0
Python中类的静态方法、类方法及实例方法
Jest基本使用方法以及mock技巧介绍
Jest是由Facebook开发并维护的一套js的单元测试框架,之前在后台的nodejs项目里面第一次尝试使用,感觉还是非常容易上手的,功能也比较强大。
腾讯移动品质中心TMQ
2018/06/26
8.8K0

相似问题

vue3/ts/jest/axios,如何模拟方法内的axios进行测试?

0135

Python类静态方法

2494

为什么我不能在Java界面中定义静态方法?

2510

什么是静态方法,什么是成员变量?

0157

为什么Java不允许重写静态方法?

2478
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档