首页 > 解决方案 > 在单元测试中为 vue 组件提供 d3

问题描述

我有一个调用d3.zoomIdentity.translate(0, 0).scale(1). 这导致一个TypeError: Cannot read property 'scale' of undefined. 我目前正在嘲笑 d3 jest.mock('d3')。当然,我可以继续模拟 d3 函数,就像我对商店所做的那样:

jest.mock('@/store', () => {
  return {
    turningStore: {
      get maximumDrawingArea() {
        return {
          diameter: 15,
          length: 10,
        }
      },
    },
  }
})

问题是我必须用这种方法模拟的功能数量。

有没有机会模拟 d3 函数而不必为每个函数实际编写一个模拟?也许只使用真正的 d3 库?

编辑:我正在考虑稍后做一些快照测试,但要让它们工作,我们需要真正的 d3,而不是模拟的,因为我们实际上是用 d3 绘制元素,对吧?所以也许不嘲笑 d3 符合我们的最大利益。只要 d3 没有在我们的测试中使用真实的 d3 引入制动变化,就不会对它们产生负面影响。

任何能让创建涉及 d3 的单元测试更容易的东西都将不胜感激。谢谢!

标签: typescriptvue.jsunit-testingd3.jsjestjs

解决方案


推荐阅读