2016-10-13 82 views
10

我使用角CLI(的WebPack版本)我的角2的項目,我也需要使用jQuery(可悲的。對我來說,這是語義的UI的依賴,我用它來處理菜單下拉菜單)。Angular 2和jQuery - 如何測試?

的方式我使用它:

npm install jquery --save 

然後在它上市angular-cli.json文件scripts數組中:

scripts": [ 
    "../node_modules/jquery/dist/jquery.min.js" 
] 

所以它被納入包文件,該文件被自動用於根html文件:

<script type="text/javascript" src="scripts.bundle.js">

然後declare var $: any;在我需要的文件中,它運行良好。

但是,ng test測試存在問題,因爲Karma引發錯誤$ is not defined

+0

你怎麼包括jQuery的在組件的規格?我得到了同樣的錯誤,並嘗試通過karma.conf.js中的文件數組包含jQuery。 –

回答

18

這是因爲測試的HTML文件,由噶提供,不包括scripts.bundle.js文件通常擔任版本一樣。

的溶液是容易的;您只需將包含jquery文件的相同路徑包含到項目根文件夾中的karma.config.js文件中即可。該文件位於項目的根目錄。

files數組,watched標誌添加路徑是這樣的:現在

files: [ 
    { pattern: './node_modules/jquery/dist/jquery.min.js', watched: false },  
    { pattern: './src/test.ts', watched: false } 
] 

噶應該知道的jQuery的依賴。

+0

哦,天哪,這是一個步驟我試圖從同一行做2天,我只是刪除「包括」標誌了,和它的工作! – Ayyash

+0

當我使用此代碼的jQuery(「#confirmDialogModal」)模態(「隱藏」);,我得到的模式是不是在運行測試用例的功能錯誤,但在實際應用中它的工作原理。也是jQuery('#facilityIdModalButton')。click();在運行測試用例時不會拋出任何錯誤。任何想法如何修復或跳過jquery調用 –