[英]jQuery is not defined when trying to test legacy jQuery plugin using Chai & Mocha
我正在嘗試為舊的jQuery插件編寫單元測試。 我是現代Javascript環境中的新手。 我曾嘗試為React創建單元測試,該單元測試使用browserify在生產中進行部署。
舊版jQuery插件文件如下所示
(function($) {
$.fn.myLegacyPlugin = function() {
alert('Hello World!');
};
})(jQuery);
該文件將被上傳到S3並通過CDN訪問。 jQuery將包含在常規瀏覽器的head標簽中。
測試文件如下。
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插件的情況下,如何測試該插件?
在嘗試了幾種可能性之后,無需使用模塊導入,而是可以使用讀取文件並評估腳本內容。
只有改變
require('../src/plugin.js');
對此
eval(fs.readFileSync(path.join(__dirname, '../src') + '/plugin.js', 'utf8'));
這樣,我不必修改舊文件。
可能是您需要將jQuery作為“ $”並將其作為“ jQuery”傳遞給插件。 盡管jquery應該同時使用兩個名稱定義。 您可以嘗試要求jquery這樣嗎:
let jQuery= require('jquery');
答案2:實際上,如果您的代碼(插件)取決於jquery,則plugin.js在加載之前應要求使用jquery。
因此將plugin.js更改為
let $ = require('jquery');
// rest of plugin code...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.