2017-09-19 89 views
0

我正在嘗試爲舊的jQuery插件編寫單元測試。我在現代Javascript環境中有點新鮮。我曾嘗試爲React創建單元測試,它使用browserify在生產中進行部署。當試圖使用Chai和Mocha測試傳統jQuery插件時未定義jQuery

遺留jQuery插件文件是像下面

(function($) { 
    $.fn.myLegacyPlugin = function() { 
     alert('Hello World!'); 
    }; 
})(jQuery); 

該文件將被上傳到S3,並且經由CDN訪問。 jQuery將被包含在普通的瀏覽器頭標記中。

測試文件如下所示。

let expect = require('chai').expect; 
let path = require('path'); 
let $ = require('jquery'); 

require('../src/plugin.js'); 

describe('plugin',() => { 
    it('should return okay',() => { 
     expect(true).to.be.true; //TODO 
    }); 
}); 

的問題是,當我試圖執行測試,流道顯示jQuery is not defined。如果不修改舊版jQuery插件,我該如何測試插件?

的代碼是在這裏https://github.com/petrabarus/js-test-jquery-legacy

回答

0

想幾種可能性,而不是使用模塊導入後,我可以只使用閱讀文件和評估腳本內容。

只有改變

require('../src/plugin.js'); 

這個

eval(fs.readFileSync(path.join(__dirname, '../src') + '/plugin.js', 'utf8')); 

這樣我就不必修改傳統的文件。

-1

這可能是你需要的jQuery的「$」,並把它傳遞給插件作爲「jQuery的」。儘管jquery應該用兩個名字來定義,不管。 你能儘量要求的jQuery像這樣:

let jQuery= require('jquery'); 

答2: 實際上,如果你的代碼(插件)取決於jQuery的,你plugin.js應要求裝貨前的jQuery ..

所以更改插件.js文件

let $ = require('jquery'); 
// rest of plugin code... 
相關問題