我们如何开玩笑地模拟 bpmn-js?

Posted

技术标签:

【中文标题】我们如何开玩笑地模拟 bpmn-js?【英文标题】:How can we mock the bpmn-js in jest? 【发布时间】:2021-07-02 22:17:29 【问题描述】:

我正在尝试运行一个笑话测试(它呈现一个 bpmn 图)并且我正在使用 angular 11。虽然我得到 TypeError: this.getDefaultLayer(...).getBBox is not a function 错误。所以可能我认为我们需要模拟 bpmn-js。

【问题讨论】:

【参考方案1】:

您需要按照以下步骤操作(全部在测试文件中):

导入 BpmnJS

我们稍后使用这些导入来模拟 BpmnJs 对象。

import BpmnJs from 'bpmn-js/dist/bpmn-navigated-viewer.production.min'

使用 BpmnJs 方法创建一个模拟对象

在这里你可以模拟 BpmnJs 对象的任何方法。而我们使用这个对象返回对象实例。

const mockBpmn = 
  get: jest.fn().mockReturnValue(
    zoom: jest.fn,
    stepZoom: jest.fn,
    add: jest.fn,
  ),
  destroy: jest.fn,
  on: jest.fn,
  importXML: jest.fn,


模拟模块和 BpmnJS 对象

这里我们告诉模拟模块和对象实例化。

jest.mock('bpmn-js/dist/bpmn-navigated-viewer.production.min')
BpmnJs.mockImplementation(() => mockBpmn)

现在您可以在您的 React 组件(或被测类)中正常使用 BpmnJs。

【讨论】:

以上是关于我们如何开玩笑地模拟 bpmn-js?的主要内容,如果未能解决你的问题,请参考以下文章

如何开玩笑地模拟文件夹中的所有文件

如何开玩笑地模拟 i18next 模块

我如何开玩笑地模拟 react-i18next 和 i18n.js?

如何使用 Jest 模拟异步函数

开玩笑地从模拟文件中窥探模拟函数

开玩笑如何模拟 api 调用