首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Jest对devExtreme exportDataGrid方法进行单元测试

如何使用Jest对devExtreme exportDataGrid方法进行单元测试
EN

Stack Overflow用户
提问于 2022-09-21 18:00:18
回答 1查看 78关注 0票数 0

我被困在试图模仿我的方法,从devextreme下载一个csv。我被困在试图嘲弄这部分功能。

代码语言:javascript
运行
复制
saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 
'DataGrid.csv')

我明白错误了。

代码语言:javascript
运行
复制
(0 , _fileSaver.default) is not a function

我怎么能从Jest中的文件保护程序中取笑保存者呢?

这是我的下载功能和jest文件

代码语言:javascript
运行
复制
const downloadCsv = () => {
  const workbook = new Workbook()
  const worksheet = workbook.addWorksheet('Main Sheet')
  const exportRes = exportDataGrid({
    component: state.gridInstance,
    worksheet: worksheet
  })
  exportRes.then(() => {
    workbook.csv.writeBuffer().then((buffer) => {
      saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.csv')
    })
  })
}

----------------------------------------------------------------------

import { shallowMount } from '@vue/test-utils'
import downloadComp from '@/components/data-grid/downloadComp'

jest.mock('devextreme/excel_exporter', () => ({
  exportDataGrid: jest.fn(
    () => new Promise((r) => r({ data: { from: { row: 1, column: 1 }, to: { row: 26, column: 8 } } }))
  )
}))

jest.mock('exceljs', () => {
  return {
    Workbook: jest.fn().mockImplementation(() => {
      return {
        addWorksheet: () => {},
        csv: {
          workbook: {},
          worksheet: null,
          writeBuffer: jest.fn(
            () => new Promise((r) => r({ data: { from: { row: 1, column: 1 }, to: { row: 26, column: 8 } } }))
          )
        }
      }
    })
  }
})

jest.mock('file-saver', () => ({ saveAs: jest.fn() }))
describe('Download grid', () => {
  let wrapper

  beforeEach(() => {
    wrapper = shallowMount(downloadComp)
  })

  it('method handleDownload', () => {
    wrapper.vm.downloadCsv()
  })
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-22 18:16:05

通过将组件上的导入更改为

代码语言:javascript
运行
复制
import FileSaver from 'file-saver'

然后像这样使用它,

代码语言:javascript
运行
复制
 FileSaver.saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.csv')

然后,在单元测试中,我可以像这样模拟saveAs函数。

代码语言:javascript
运行
复制
jest.mock('file-saver', () => ({ saveAs: jest.fn() }))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73805132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档