- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想断言 EventEmitter 类的发射是通过使用 Jest 使用特定参数调用的。我有一个单独的文件,在其中创建要使用的 eventEmitter 实例,并在另一个类上导入它,并在某些时候发出事件。
// commonEmitter.ts
const events = require('events');
export const commonEmitter = new events.EventEmitter();
// class.ts
import { commonEmitter } from (..)
export class MyClass {
(...)
method(){
commonEmitter.emit('eventName', { data: true});
}
}
// class.spec.ts
let commonEmitterMock: any
beforeEach(() => {
commonEmitterMock = createMock('emit');
});
it('testMyClass', async () => {
const method = new MyClass().method();
expect(commonEmitterMock).toHaveBeenCalledWith('eventName', { data: true})
}
最佳答案
要在不放弃过度设计的代码的情况下测试 http 请求事件的不同分支,您可以执行以下操作。
这是我打算使用 Jest 测试的函数的 stub 版本:
function myRequest(resolve, reject) {
http.request(url, options, (res: IncomingMessage) => {
response.on('data', (chunk) => {
// On data event code
})
response.on('end', () => {
// On end event code
resolve()
})
response.on('error', (err) => {
reject(err)
})
}
}
首先,我们需要模拟 http 库并覆盖请求实现以手动触发回调并注入(inject)我们模拟的响应对象:
...
const mockRes = {
write: jest.fn(),
on: jest.fn(),
end: jest.fn()
}
jest.mock('http', () => ({
request: jest.fn().mockImplementation((url, options, cb) => {
cb(mockRes)
})
})
然后,我们的每个 Jest 测试单元,我们手动触发我们希望测试的每个事件的回调,将数据传递给每个特定的回调:
it('should call request callback and reject for invalid content response', async () => {
const resolve = jest.fn()
const reject = jest.fn()
mockRes.on.mockImplementation((event, cb) => {
if (event === 'end') {
cb()
} else if (event === 'data') {
cb(new Error('invalid_json_string'))
}
})
// @ts-ignore
myRequest(resolve, reject)
// @ts-ignore
expect(mockRes.on).toHaveBeenCalledWith('data', expect.any(Function))
expect(mockRes.on).toHaveBeenCalledWith('end', expect.any(Function))
expect(reject).toHaveBeenCalledWith(expect.any(Error))
})
关于node.js - 用 Jest 模拟自定义事件发射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59957285/
我是 Arduino 和这个论坛的新手,这是我除了教程之外的第一个 Arduino 项目。 我正在尝试使用遥控发射器/接收器和 Arudino 来控制伺服。我使用 Arduino 而不是将伺服器直接连
我喜欢听一个特定的广播,我用 vlc 给自己做了一个小发射器,就像这样: #!/bin/sh vlc http://mp3lg.tdf-cdn.com/fip/all/fiphautdebit.mp3
是否有用于发出 YAML 的 C++ 库?维基百科提到了 libyaml 的 c++ 包装器,但链接已断开。 YAML官方网站只提供yaml-cpp ,这也在 this 中提出所以问题,但 cpp-y
我正在尝试将我的 iPhone 设置为广播 iBeacon 信号以供另一部 iPhone 接收。本应接收信号的 iPhone 可以正常工作,但我无法让另一部 iPhone 广播信号。 我正在学习本教程
我正在编写一个网络应用程序,其中多个监听器(Evcentsource SSE 客户端 JS)将连接到我的服务器。我想做的是 为每个连接的监听器存储 SSE 发射器:可以在内存中或通过为每个客户端分配
我想在后端进行串行工作。我想选择 geo_unit 并做另一项工作并向客户端写入响应。 我读了 http://nodejs.org/docs/v0.4.7/api/events.html#events
我从早期就使用 BIRT,但仍然有关于 PDF 发射器的谜语。 短篇小说 : 我可以配置 fontsConfig.xml 以从相对路径或 jar 加载字体吗? 长话: 我们同时使用 FOP 和 BIR
今天我得到了一些很酷的 radio 接收器和发射器,问题是当我输入我想发送的消息时,它会在另一个 arduino 上吐出乱码。 //transmitter #include void setup()
我有一个使用 html canvas 函数创建的形状(四分之一圆): 移动到 LineTo QuadraticCurveTo 如何将形状爆炸成粒子,然后将它们返回形成一个圆圈? 最佳答案 我不会为您编
我正在实现自定义 Birt 发射器,我需要知道单元格、表格或网格的宽度和高度(以像素或点为单位)。如果未在报表设计器中明确设置度量,则会出现此问题。 我试图通过调用 cellContent.getWi
我将给出我正在尝试做的事情的一个小前提。我有一个游戏概念,需要多个玩家围坐在一张 table 旁,有点像扑克牌。 不同播放器之间的正常交互,通过socket.io结合node js很容易处理。 我很难
我是一名优秀的程序员,十分优秀!