在Angular 5中测试文件保存器(FileSaver)

7

我在 Angular 5 应用程序中导入了 file-saver,但在执行测试用例时出现以下错误:

TypeError: FileSaver.saveAs is not a function

Spec.ts:
import FileSaver from 'file-saver';

.ts
import FileSaver from 'file-saver';
FileSaver.saveAs(blob, filename);

如何在测试用例中模拟FileSaver。


1
使用console.log打印FileSaver并检查其原型中是否存在saveAs函数。 - Radonirina Maminiaina
2
这个可能会有用:https://dev59.com/pVcP5IYBdhLWcg3wP3wU#44692287 - R. Richards
@RadonirinaMaminiaina 当我在控制台中输出FileSaver时,它显示为“undefined”。我对Angular 2测试还不熟悉,您能告诉我如何在Spec.ts中获取FileSaver吗? - Sreekanth Reddy
1
尝试一下这个,它对我来说是有效的。 "import { saveAs } from 'file-saver / FileSaver';" - Gavishiddappa Gadagi
1个回答

15

这在 Angular 7 中有效,因此我猜它也适用于 NG5。首先,在组件和规范中都要使用“as”语法导入 FileSaver:


import * as FileSaver from 'file-saver';

然后在 beforeEach 规范中:

spyOn(FileSaver, 'saveAs').and.stub();

2
这似乎已经突然停止对我作为存根saveAs方法的机制起作用了。还有其他人观察到类似的情况吗? - James Robinson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接