【发布时间】:2016-12-16 21:14:54
【问题描述】:
我有一个使用 pdfMake 生成 PDF 的项目。要使用它,我将文件包含在我的 index.html 中
<script src='js/pdfmake.js'></script>
<script src='js/vfs_fonts.js'></script>
在 pdfmake.js 内部,它声明了 global["pdfMake"],然后允许我在我的服务中使用该库。
pdf服务:
pdfMake.createPdf(docDefinition).download(fileName);
一切都很好,但是当我尝试在我的服务中测试这个方法时,我收到一个错误,即测试找不到变量 pdfMake。考虑到它是由 index.html 加载的,这是有道理的。
如何在我的测试中用模拟替换这个库?
我尝试过使用间谍,但由于 makePdf 不是一个不起作用的函数。 spyOn(service, 'makePdf').
我尝试将其设置为变量,但这也不起作用,我得到:严格模式禁止隐式创建全局属性 'pdfMake'
pdfMake = {
createPdf: jasmine.createSpy('createPdf').and.returnValue({
download: jasmine.createSpy('download')
}
}
【问题讨论】:
-
它应该可以工作。你看过stackoverflow.com/questions/13794637/…吗?
-
如果其他人对此有疑问,首先要摆脱隐式创建错误,请确保首先声明变量,以便
var pdfMake并在创建间谍时将其附加到窗口对象