1
我有一个使用pdfMake生成PDF的项目。要使用它,我在文件中包含我的index.html茉莉花单元测试定义了作为全局变量导入的库
<script src='js/pdfmake.js'></script>
<script src='js/vfs_fonts.js'></script>
里面pdfmake.js它声明global["pdfMake"]
然后允许我使用该库在我的服务。
pdfService:
pdfMake.createPdf(docDefinition).download(fileName);
一切都很正常,但是当我试图在我的服务进行测试的部份方法,我得到一个错误,测试无法找到变量pdfMake。考虑到它由index.html加载,这是有道理的。
我该如何在我的测试中用模拟替换这个库?
我试过使用间谍,但由于makePdf不是一个不起作用的函数。 spyOn(service, 'makePdf')
。
我尝试了将其设置为可变的,但也没有工作,我得到:严格禁止模式全局属性“pdfMake”
pdfMake = {
createPdf: jasmine.createSpy('createPdf').and.returnValue({
download: jasmine.createSpy('download')
}
}
它应该工作。你有看看http://stackoverflow.com/questions/13794637/undefined0referenceerror-strict-mode-forbids-implicit-creation-of-global-prop? – tanmay
如果其他人有这个问题首先摆脱隐含的创建错误请确保你首先声明你的变量,所以'var pdfMake'和当你创建你的间谍attatch它的窗口对象 – Jackthomson