events - 测试以查看事件是否以开玩笑的方式运行
问题描述
我试图想出一个场景来实际测试事件是否正在运行。我的大脑是这样工作的。我注册了一个监听器,我期待 spy 被调用,但不是吗?
const EventEmitter = require('events')
const ee = new EventEmitter()
describe('Event Emitter', () => {
it('Emit Listener', () => {
ee.on('test', function() {})
const spy = jest.spyOn(ee, 'on')
ee.emit('test')
expect(spy).toHaveBeenCalledTimes(1)
})
})
解决方案
jest.spyOn(ee, 'on')
设置一个可以测试ee.on(...)
之后是否被调用的间谍。因为不是,所以测试失败。间谍不可能追溯。相反,它应该在调用之前设置:
const spy = jest.spyOn(ee, 'on')
ee.on('test', function() {})
expect(spy).toHaveBeenCalledTimes(1)
expect(spy).toHaveBeenCalledWith(expect.any(Function))
或者如果目标是测试事件,它应该是:
const spy = jest.fn()
ee.on('test', spy)
ee.emit('test')
expect(spy).toHaveBeenCalledTimes(1)
推荐阅读
- javascript - 我们可以在 react-native 应用程序中嵌入 YouTube 直播吗
- php - 使用“DISTINCT YEAR(created_at)”寻找与此基本查询等效的 Eloquent
- android-webview - 在以下示例中,如何将 Web 视图添加到 Navigation Expandable List?
- r - ggraph - 格式化图形边缘
- node.js - 将 HTTP 主体从一个函数传递到另一个 nodeJS
- kubernetes - kubectl config 合并重定向不像预期的那样
- cmd - WScript.CreateObject("WScript.Shell") 在 win8 的 cmd 中无法识别
- c++ - 二叉树中节点的级别
- typescript - 能够从不相关的类型生成 TypeScript 元组?
- elixir - 如何在 Phoenix Form 中传递具有 put_assoc 的变更集