2016-12-16 7 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') 
    }), 
}; 
関連する問題