首页 > 解决方案 > 如何使用 Typescript 用 Jest 模拟 tls.PeerCertificate?

问题描述

我可以像这样用茉莉花模拟 getCertificate :

const socket = new TLSSocket(new net.Socket())
socket.authorized = false
socket.authorizationError = Error('Invalid certificate')
//Mocking here
const spyOnGetCertificate = spyOn(socket, 'getCertificate').and.returnValue({'subject': {'CN': 'testing'}});

但是,当我尝试开玩笑时:

const socket = new TLSSocket(new net.Socket())
socket.authorized = false
socket.authorizationError = Error('Invalid certificate')
//Mocking here
const spyOnGetCertificate = jest.spyOn(socket, 'getCertificate').mockImplementationOnce(() => {
  return {'subject': {'CN': 'testing'}}
})
socket.getCertificate = spyOnGetCertificate

我收到一个错误:

类型 'SpyInstance' 不可分配给类型 '() => object | 同行证书”。类型 'SpyInstance' 不提供与签名 '() 的匹配:对象 | PeerCertificate'.ts(2322)

设置所有 PeerCertificate 属性后,我仍然收到错误消息。

标签: typescript

解决方案


哎呀,不需要这样做‍♂️</p>

socket.getCertificate = spyOnGetCertificate

推荐阅读