2016-12-16 1 views
1

PDF를 생성하는 데 pdfMake를 사용하는 프로젝트가 있습니다. 그것을 사용하려면 내 index.html을자스민 단위 테스트는 전역 변수로 가져온 라이브러리를 정의합니다.

<script src='js/pdfmake.js'></script> 
<script src='js/vfs_fonts.js'></script> 

에서 파일을 포함하는 내부 그 다음 내 서비스 라이브러리를 사용할 수있는 global["pdfMake"]를 선언 pdfmake.js.

pdfService :

pdfMake.createPdf(docDefinition).download(fileName); 

모든 것이 잘 작동하지만 난 내 서비스에 THS 방법을 테스트하려고 할 때 나는 시험 변수 pdfMake를 찾을 수 없다는 오류가 발생합니다. 그것은 index.html에 의해로드 된 것을 고려하면 의미가 있습니다.

테스트에서이 라이브러리를 모의 파일로 바꾸려면 어떻게해야합니까?

스파이를 사용해 보았지만 makePdf가 작동하지 않는 함수이기 때문에 시도했습니다. spyOn(service, 'makePdf').

난 그냥 변수로 설정 시도하지만이 또한 작동하지 않았다 내가 얻을 : 엄격한 모드 저도 같은 문제를 가지고 'pdfMake'

pdfMake = { 
    createPdf: jasmine.createSpy('createPdf').and.returnValue({ 
    download: jasmine.createSpy('download') 
    } 
} 
+0

그래야합니다. http://stackoverflow.com/questions/13794637/undefined0referenceerror-strict-mode-forbids-implicit-creation-of-global-prop에서 살펴 보셨습니까? – tanmay

+0

암시 적 생성 오류를 없애기 위해 다른 사람이 먼저이 문제를 겪고있는 경우 변수를 먼저 선언해야합니다. 따라서 'var pdfMake'를 지정하고 스파이를 만들 때 윈도우 객체에 첨부합니다 – Jackthomson

답변

0

전역 속성의 내재적으로 작성을 금지하고, 삽입 해결 pdf 단위 테스트 내 전역 변수 창에서 모의 ​​테스트를합니다. 따라서 귀하의 경우에는 다음과 같이됩니다 :

window.pdfMake = { 
    createPdf: jasmine.createSpy('createPdf') 
    .and.returnValue({ 
    download: jasmine.createSpy('download') 
    }), 
};