我被困在试图模仿我的方法,从devextreme下载一个csv。我被困在试图嘲弄这部分功能。
saveAs(new Blob([buffer], { type: 'application/octet-stream' }),
'DataGrid.csv')
我明白错误了。
(0 , _fileSaver.default) is not a function
我怎么能从Jest中的文件保护程序中取笑保存者呢?
这是我的下载功能和jest文件
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()
})
})
发布于 2022-09-22 18:16:05
通过将组件上的导入更改为
import FileSaver from 'file-saver'
然后像这样使用它,
FileSaver.saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'DataGrid.csv')
然后,在单元测试中,我可以像这样模拟saveAs函数。
jest.mock('file-saver', () => ({ saveAs: jest.fn() }))
https://stackoverflow.com/questions/73805132
复制相似问题