unit-testing - 用 Jest 测试 exceljs(第三方模块)
问题描述
我正在使用 exceljs 生成一个包含一些数据的 excel 文件。我想为该函数编写测试用例。
这是功能:
public exportUploadErrors(data: UploadError[]): void {
const fileName = `lei-upload-errors-${new Date().toISOString()}`;
const workbook = new Workbook();
const worksheet: Worksheet = workbook.addWorksheet('Upload Errors');
const headers = [
{ header: 'LEI ID', key: 'leiId' },
{ header: 'Error Message', key: 'error' },
];
worksheet.columns = headers;
worksheet.getRow(1).fill = {
type: 'pattern',
pattern: 'solid',
fgColor: { argb: 'cccccc' },
};
worksheet.getRow(1).font = {
size: 12,
bold: true,
};
// adding data to excel sheet
data.forEach((error: UploadError) => {
worksheet.addRow(error);
});
workbook.xlsx.writeBuffer().then((leiExportArr) => {
const blob = new Blob([leiExportArr], {
type:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
});
fs.saveAs(blob, `${fileName}.xlsx`);
});
}
当我exportUploadErrors
用虚拟数据调用方法时,workbook.xlsx.writeBuffer()
方法不会被调用,方法也是如此fs.saveAs
。
我如何模拟这些方法?
解决方案
其中之一应该工作:
await workbook.xlsx.writeFile(filename);
或者
const buffer = workbook.xlsx.writeBuffer()
await fs.writeFileSync('file.xlsx', buffer);
文档: https ://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options
顺便提一句。出于生成目的,我将为您提供我的 lib:xlsx-renderer,它由 ExcelJS 提供支持
推荐阅读
- bash - 简单的 bash 程序 #2
- windows - 以管理员身份从批处理文件运行 Windows 服务
- ssh - 尝试通过 SSH 使用 Plotly 保存无花果
- c# - 两个复制的 SQL 服务器之间的应用程序处理故障转移
- android - 如何在模块中查找 NewApi 问题?
- r - 当您有具有多个数据的组时,在 R 中计算组标准偏差
- javascript - Python FastAPI:返回的 gif 图像没有动画
- angular - 安全运行 Angular Universal
- javascript - 是否可以更快地加载包含图像的大型 PDF?
- javascript - setTimeout() 无法打开新网址